Содержание
Введение
Параметры жизни кэша в настройках сервера документов определяют, как долго различные элементы (блокировки, сессии, файлы и т. д.) хранятся в памяти или кэше системы. Эти параметры находятся в блоке конфигурации services.CoAuthoring.expire
в файле local.json
и влияют на производительность, стабильность и поведение сервера при совместной работе с документами.
Ниже приведено подробное описание каждого параметра, его назначения, рекомендаций по использованию и возможных последствий изменения значений.
Формат конфигурации
Параметры задаются в JSON-формате в секции services.CoAuthoring.expire
. Значения могут быть целыми числами (в секундах) или строками (в формате времени, например, «1s», «1m», «1h», «1d», «1y»). Пример конфигурации приведен в конце инструкции.
1. services.CoAuthoring.expire.saveLock
Описание: Определяет время (в секундах), в течение которого сохраняется блокировка для операции сохранения документа. Эта блокировка предотвращает одновременное сохранение документа несколькими пользователями, чтобы избежать конфликтов.
Тип: Целое число (секунды).
Значение по умолчанию: «60» (1 минута).
Использование:
- Этот параметр важен для обеспечения целостности данных при сохранении документа. Если несколько пользователей редактируют документ одновременно, блокировка гарантирует, что сохранение произойдет последовательно.
- Увеличение значения может быть полезным, если операции сохранения занимают больше времени (например, при больших документах или медленных сетях). Однако слишком большое значение может привести к задержкам для других пользователей, ожидающих снятия блокировки.
Рекомендации:
- Для большинства сценариев значение по умолчанию («60») подходит.
- Если пользователи сталкиваются с ошибками сохранения из-за таймаута, попробуйте увеличить до «120» секунд.
- Не устанавливайте слишком большое значение (например, более «300»), чтобы избежать блокировки других операций.
2. services.CoAuthoring.expire.presence
Описание: Определяет время (в секундах), в течение которого статус присутствия пользователя в редакторе документа остается активным. Статус присутствия показывает, что пользователь активно работает с документом.
Тип: Целое число (секунды).
Значение по умолчанию: «300» (5 минут).
Использование:
- Этот параметр влияет на отображение активных пользователей в интерфейсе редактора. Например, если пользователь неактивен, его статус исчезнет через указанное время.
- Слишком короткое время может привести к частому исчезновению статуса, что может сбивать с толку других пользователей. А слишком длинное — к некорректному отображению активности.
Рекомендации:
- Значение «300» подходит для большинства случаев, так как обеспечивает баланс между актуальностью статуса и производительностью.
- Для интенсивной совместной работы можно уменьшить до «120» секунд, чтобы быстрее обновлять статусы.
- Для сценариев с редкими действиями можно увеличить до «600» секунд.
3. services.CoAuthoring.expire.locks
Описание: Определяет время жизни (в секундах) блокировки документа, установленной для предотвращения конфликтов при редактировании.
Тип: Целое число (секунды).
Значение по умолчанию: «604800» (7 дней).
Использование:
- Блокировка документа предотвращает одновременное редактирование документа разными пользователями в конфликтующих режимах.
- Длительное время жизни блокировки полезно для сценариев, когда пользователи могут оставлять документ открытым на длительное время (например, в течение рабочего дня).
- Слишком короткое время может привести к преждевременному снятию блокировки, что вызовет конфликты.
Рекомендации:
- Значение по умолчанию («604800») подходит для большинства случаев.
- Если пользователи редко возвращаются к документам после длительных перерывов, можно уменьшить до «86400» (1 день).
- Убедитесь, что это значение больше, чем
sessionidle
иsessionabsolute
, чтобы избежать преждевременного снятия блокировки.
4. services.CoAuthoring.expire.changeindex
Описание: Определяет время (в секундах), в течение которого хранятся индексы изменений документа. Эти индексы используются для отслеживания истории изменений.
Тип: Целое число (секунды).
Значение по умолчанию: «86400» (1 день).
Использование:
- Этот параметр влияет на то, как долго сервер хранит информацию о последних изменениях в документе. Это важно для синхронизации изменений между пользователями.
- Слишком короткое время может привести к потере данных об изменениях, особенно если пользователи работают с документом с перерывами.
Рекомендации:
- Значение по умолчанию («86400») подходит для большинства случаев.
- Для интенсивной работы с документами можно увеличить до «172800» (2 дня), чтобы сохранить больше истории изменений.
- Не устанавливайте слишком большое значение, чтобы не перегружать кэш сервера.
5. services.CoAuthoring.expire.lockDoc
Описание: Определяет время (в секундах) блокировки документа для предотвращения одновременного редактирования.
Тип: Целое число (секунды).
Значение по умолчанию: «30» (30 секунд).
Использование:
- Этот параметр используется для краткосрочных блокировок, связанных с конкретными действиями в редакторе (например, применение форматирования).
- Слишком короткое время может привести к конфликтам при редактировании, а слишком длинное — к задержкам для других пользователей.
Рекомендации:
- Значение по умолчанию («30») подходит для большинства сценариев.
- Если пользователи часто сталкиваются с ошибками блокировки, попробуйте увеличить до «60» секунд.
- Не устанавливайте значение больше «120», чтобы избежать ненужных задержек.
6. services.CoAuthoring.expire.message
Описание: Определяет время жизни (в секундах) сообщений, отправленных в чате редактора или связанных с совместной работой.
Тип: Целое число (секунды).
Значение по умолчанию: «86400» (1 день).
Использование:
- Этот параметр влияет на то, как долго сообщения хранятся в кэше сервера. Это важно для чатов в редакторе или уведомлений о действиях.
- Слишком короткое время может привести к потере важных сообщений, а слишком длинное — к накоплению устаревших данных.
Рекомендации:
- Значение по умолчанию («86400») подходит для большинства случаев.
- Для интенсивного общения в редакторе можно уменьшить до «43200» (12 часов).
- Если сообщения нужно хранить дольше, увеличьте до «172800» (2 дня).
7. services.CoAuthoring.expire.lastsave
Описание: Определяет время жизни (в секундах) записи о последнем успешном сохранении документа в базе данных.
Тип: Целое число (секунды).
Значение по умолчанию: «604800» (7 дней).
Использование:
- Этот параметр важен для отслеживания последнего успешного сохранения, чтобы избежать потери данных при сбоях.
- Длительное время хранения полезно для восстановления данных после сбоев или длительных перерывов в работе.
Рекомендации:
- Значение по умолчанию («604800») подходит для большинства случаев.
- Если сервер испытывает проблемы с объемом кэша, можно уменьшить до «86400» (1 день).
- Убедитесь, что это значение больше, чем
saved
, чтобы избежать конфликтов.
8. services.CoAuthoring.expire.forcesave
Описание: Определяет время жизни (в секундах) данных, связанных с принудительным сохранением документа.
Тип: Целое число (секунды).
Значение по умолчанию: «604800» (7 дней).
Использование:
- Принудительное сохранение используется для сохранения документа в случае сбоев или завершения сессии.
- Этот параметр определяет, как долго данные принудительного сохранения хранятся в кэше.
Рекомендации:
- Значение по умолчанию («604800») подходит для большинства случаев.
- Если вы хотите быстрее очищать кэш, можно уменьшить до «86400» (1 день).
- Убедитесь, что значение синхронизировано с
lastsave
.
9. services.CoAuthoring.expire.forcesaveLock
Описание: Определяет время жизни (в секундах) принудительно сохраненных блокировок в режиме кластера ioredis.
Тип: Целое число (секунды).
Значение по умолчанию: «5000» (5000 секунд, ~83 минуты).
Использование:
- Этот параметр важен для работы в кластерной среде с использованием
ioredis
, где блокировки могут быть принудительно сохранены для синхронизации. - Слишком короткое время может привести к потере блокировок, а слишком длинное — к накоплению устаревших данных.
Рекомендации:
- Значение по умолчанию («5000») подходит для большинства случаев. Если кластер испытывает проблемы с синхронизацией, попробуйте увеличить до «10000».
- Не устанавливайте слишком большое значение, чтобы избежать перегрузки кэша.
10. services.CoAuthoring.expire.saved
Описание: Определяет время жизни (в секундах) данных успешного сохранения документа в базе данных.
Тип: Целое число (секунды).
Значение по умолчанию: «3600» (1 час).
Использование:
- Этот параметр определяет, как долго хранится информация об успешном сохранении документа.
- Слишком короткое время может привести к потере данных при сбоях, а слишком длинное — к накоплению устаревших записей.
Рекомендации:
- Значение по умолчанию («3600») подходит для большинства случаев.
- Для интенсивной работы с документами можно увеличить до «7200» (2 часа).
- Убедитесь, что это значение меньше, чем
lastsave
.
11. services.CoAuthoring.expire.documentsCron
Описание: Определяет расписание (в формате cron), по которому сервер проверяет и удаляет старые файлы из кэша.
Тип: Строковый (формат cron).
Значение по умолчанию: «0 */2 * * * *» (каждые 2 часа).
Использование:
- Этот параметр управляет очисткой кэша от устаревших файлов документов, чтобы освободить место.
- Слишком частая проверка может увеличить нагрузку на сервер, а слишком редкая — привести к накоплению данных.
Рекомендации:
- Значение по умолчанию («0 */2 * * * *») подходит для большинства случаев.
- Для серверов с большим количеством документов можно установить проверку реже, например, «0 */4 * * * *» (каждые 4 часа).
- Используйте онлайн-инструменты для проверки синтаксиса cron-выражений.
12. services.CoAuthoring.expire.files
Описание: Определяет время жизни (в секундах) временных папок в каталоге App_Data
.
Тип: Целое число (секунды).
Значение по умолчанию: «86400» (1 день).
Использование:
- Этот параметр определяет, как долго временные файлы документов хранятся в папке
App_Data
. - Слишком короткое время может привести к потере данных, а слишком длинное — к переполнению хранилища.
Рекомендации:
- Значение по умолчанию («86400») подходит для большинства случаев.
- Если место на диске ограничено, уменьшите до «43200» (12 часов).
- Убедитесь, что это значение синхронизировано с
filesCron
.
13. services.CoAuthoring.expire.filesCron
Описание: Определяет расписание (в формате cron) для проверки и удаления устаревших папок в App_Data
.
Тип: Строковый (формат cron).
Значение по умолчанию: «00 00 */1 * * *» (каждый день в полночь).
Использование:
- Этот параметр управляет периодичностью очистки папок в
App_Data
. - Слишком частая проверка может нагружать сервер, а слишком редкая — привести к накоплению данных.
Рекомендации:
- Значение по умолчанию («00 00 */1 * * *») подходит для большинства случаев.
- Для серверов с большим объемом данных можно установить проверку реже, например, «00 00 */2 * * *» (каждые 2 дня).
- Используйте онлайн инструменты для проверки синтаксиса cron-выражений.
14. services.CoAuthoring.expire.filesremovedatonce
Описание: Определяет максимальное количество папок, которые сервер удаляет за один цикл очистки кэша.
Тип: Целое число.
Значение по умолчанию: «100».
Использование:
- Этот параметр ограничивает количество одновременно удаляемых папок, чтобы снизить нагрузку на сервер во время очистки.
- Слишком большое значение может вызвать пиковую нагрузку, а слишком маленькое — замедлить процесс очистки.
Рекомендации:
- Значение по умолчанию («100») подходит для большинства случаев.
- Для серверов с высокой производительностью можно увеличить до «500».
- Для серверов с ограниченными ресурсами уменьшите до «50».
15. services.CoAuthoring.expire.sessionidle
Описание: Определяет время жизни (в формате времени, например, «1s», «1m», «1h», «1d») неактивной сессии пользователя. Неактивность подразумевает отсутствие действий в редакторе, включая перемещение курсора.
Тип: Строковый (формат времени).
Значение по умолчанию: «1h» (1 час).
Использование:
- Этот параметр определяет, как долго неактивный пользователь может оставаться подключенным к сессии редактирования. По истечении этого времени пользователь отключается, а документ сохраняется.
- Слишком короткое время может прерывать работу пользователей, а слишком длинное — увеличивать нагрузку на сервер.
Рекомендации:
- Значение по умолчанию («1h») подходит для большинства случаев.
- Для интенсивной работы можно уменьшить до «30m».
- Для сценариев с редкими действиями можно увеличить до «2h».
16. services.CoAuthoring.expire.sessionabsolute
Описание: Определяет максимальное время жизни (в формате времени) любой сессии редактирования, независимо от активности пользователя.
Тип: Строковый (формат времени).
Значение по умолчанию: «30d» (30 дней).
Использование:
- Этот параметр ограничивает общее время, в течение которого сессия может существовать, даже если пользователь активен.
- Длительное время полезно для долгосрочных проектов, но может увеличить нагрузку на сервер.
Рекомендации:
- Значение по умолчанию («30d») подходит для большинства случаев.
- Для краткосрочных задач можно уменьшить до «7d».
- Убедитесь, что значение больше, чем
sessionidle
.
17. services.CoAuthoring.expire.sessionclosecommand
Описание: Определяет время (в формате времени) до истечения срока действия sessionidle
или sessionabsolute
, за которое пользователю отправляется предупреждающее сообщение о скором завершении сессии.
Тип: Строковый (формат времени).
Значение по умолчанию: «2m» (2 минуты).
Использование:
- Этот параметр позволяет уведомить пользователя о скором отключении, чтобы он успел сохранить изменения.
- Слишком короткое время может не дать пользователю достаточно времени для реакции.
Рекомендации:
- Значение по умолчанию («2m») подходит для большинства случаев.
- Для более комфортной работы можно увеличить до «5m».
- Не устанавливайте слишком большое значение, чтобы избежать путаницы.
18. services.CoAuthoring.expire.pemStdTTL
Описание: Определяет время жизни (в формате времени) PEM-файлов, содержащих секреты для шифрования.
Тип: Строковый (формат времени).
Значение по умолчанию: «1h» (1 час).
Использование:
- Этот параметр управляет сроком действия ключей шифрования, используемых для защиты данных.
- Слишком короткое время может привести к частому обновлению ключей, а слишком длинное — к снижению безопасности.
Рекомендации:
- Значение по умолчанию («1h») подходит для большинства случаев.
- Для повышения безопасности можно уменьшить до «30m».
- Убедитесь, что значение синхронизировано с
pemCheckPeriod
.
19. services.CoAuthoring.expire.pemCheckPeriod
Описание: Определяет периодичность (в формате времени) проверки срока действия PEM-файлов.
Тип: Строковый (формат времени).
Значение по умолчанию: «10m» (10 минут).
Использование:
- Этот параметр определяет, как часто сервер проверяет, истек ли срок действия PEM-файлов.
- Слишком частая проверка может нагружать сервер, а слишком редкая — привести к использованию устаревших ключей.
Рекомендации:
- Значение по умолчанию («10m») подходит для большинства случаев.
- Для серверов с высокой нагрузкой можно увеличить до «20m».
- Убедитесь, что значение меньше, чем
pemStdTTL
.
20. services.CoAuthoring.expire.updateVersionStatus
Описание: Определяет время (в формате времени), через которое пользователь может повторно открыть документ после ошибки, связанной с использованием старого ключа для уже сохраненного файла.
Тип: Строковый (формат времени).
Значение по умолчанию: «5m» (5 минут).
Использование:
- Этот параметр помогает избежать конфликтов при попытке открыть устаревшую версию документа.
- Слишком короткое время может не дать достаточно времени для синхронизации, а слишком длинное — замедлить доступ.
Рекомендации:
- Значение по умолчанию («5m») подходит для большинства случаев.
- Для интенсивной работы можно уменьшить до «2m».
- Не устанавливайте слишком большое значение, чтобы избежать задержек.
21. services.CoAuthoring.expire.monthUniqueUsers
Описание: Определяет время жизни (в формате времени) списка уникальных пользователей за месяц, используемого для аналитики.
Тип: Строковый (формат времени).
Значение по умолчанию: «1y» (1 год).
Использование:
- Этот параметр используется для хранения данных о пользователях, работавших с сервером в течение месяца.
- Слишком короткое время может привести к потере аналитических данных.
Рекомендации:
- Значение по умолчанию («1y») подходит для большинства случаев.
- Для серверов с ограниченным хранилищем можно уменьшить до «6m».
Пример конфигурации
""json "services": { "CoAuthoring": { "expire": { "saveLock": 60, "presence": 300, "locks": 604800, "changeindex": 86400, "lockDoc": 30, "message": 86400, "lastsave": 604800, "forcesave": 604800, "forcesaveLock": 5000, "saved": 3600, "documentsCron": "0 */2 * * * *", "files": 86400, "filesCron": "00 00 */1 * * *", "filesremovedatonce": 100, "sessionidle": "1h", "sessionabsolute": "30d", "sessionclosecommand": "2m", "pemStdTTL": "1h", "pemCheckPeriod": "10m", "updateVersionStatus": "5m", "monthUniqueUsers": "1y" } } } ""
Общие рекомендации
- Тестирование изменений: Перед внесением изменений в параметры убедитесь, что вы протестировали их на тестовой среде, так как некорректные значения могут повлиять на производительность или доступность документов.
- Резервное копирование: Всегда сохраняйте резервную копию конфигурации перед внесением изменений.
- Мониторинг: Используйте инструменты мониторинга для отслеживания влияния изменений на производительность сервера (например, использование памяти, процессора и диска).
- Синхронизация параметров: Убедитесь, что связанные параметры (например,
lastsave и saved
,pemStdTTL и pemCheckPeriod
) имеют логически согласованные значения.