Введение

Параметры жизни кэша в настройках сервера документов определяют, как долго различные элементы (блокировки, сессии, файлы и т. д.) хранятся в памяти или кэше системы. Эти параметры находятся в блоке конфигурации services.CoAuthoring.expire в файле local.json и влияют на производительность, стабильность и поведение сервера при совместной работе с документами.

Ниже приведено подробное описание каждого параметра, его назначения, рекомендаций по использованию и возможных последствий изменения значений.

Формат конфигурации

Параметры задаются в JSON-формате в секции services.CoAuthoring.expire. Значения могут быть целыми числами (в секундах) или строками (в формате времени, например, «1s», «1m», «1h», «1d», «1y»). Пример конфигурации приведен в конце инструкции.

1. services.CoAuthoring.expire.saveLock

Описание: Определяет время (в секундах), в течение которого сохраняется блокировка для операции сохранения документа. Эта блокировка предотвращает одновременное сохранение документа несколькими пользователями, чтобы избежать конфликтов.

Тип: Целое число (секунды).

Значение по умолчанию: «60» (1 минута).

Использование:

  1. Этот параметр важен для обеспечения целостности данных при сохранении документа. Если несколько пользователей редактируют документ одновременно, блокировка гарантирует, что сохранение произойдет последовательно.
  2. Увеличение значения может быть полезным, если операции сохранения занимают больше времени (например, при больших документах или медленных сетях). Однако слишком большое значение может привести к задержкам для других пользователей, ожидающих снятия блокировки.

Рекомендации:

  1. Для большинства сценариев значение по умолчанию («60») подходит.
  2. Если пользователи сталкиваются с ошибками сохранения из-за таймаута, попробуйте увеличить до «120» секунд.
  3. Не устанавливайте слишком большое значение (например, более «300»), чтобы избежать блокировки других операций.

2. services.CoAuthoring.expire.presence

Описание: Определяет время (в секундах), в течение которого статус присутствия пользователя в редакторе документа остается активным. Статус присутствия показывает, что пользователь активно работает с документом.

Тип: Целое число (секунды).

Значение по умолчанию: «300» (5 минут).

Использование:

  1. Этот параметр влияет на отображение активных пользователей в интерфейсе редактора. Например, если пользователь неактивен, его статус исчезнет через указанное время.
  2. Слишком короткое время может привести к частому исчезновению статуса, что может сбивать с толку других пользователей. А слишком длинное — к некорректному отображению активности.

Рекомендации:

  1. Значение «300» подходит для большинства случаев, так как обеспечивает баланс между актуальностью статуса и производительностью.
  2. Для интенсивной совместной работы можно уменьшить до «120» секунд, чтобы быстрее обновлять статусы.
  3. Для сценариев с редкими действиями можно увеличить до «600» секунд.

3. services.CoAuthoring.expire.locks

Описание: Определяет время жизни (в секундах) блокировки документа, установленной для предотвращения конфликтов при редактировании.

Тип: Целое число (секунды).

Значение по умолчанию: «604800» (7 дней).

Использование:

  1. Блокировка документа предотвращает одновременное редактирование документа разными пользователями в конфликтующих режимах.
  2. Длительное время жизни блокировки полезно для сценариев, когда пользователи могут оставлять документ открытым на длительное время (например, в течение рабочего дня).
  3. Слишком короткое время может привести к преждевременному снятию блокировки, что вызовет конфликты.

Рекомендации:

  1. Значение по умолчанию («604800») подходит для большинства случаев.
  2. Если пользователи редко возвращаются к документам после длительных перерывов, можно уменьшить до «86400» (1 день).
  3. Убедитесь, что это значение больше, чем sessionidle и sessionabsolute, чтобы избежать преждевременного снятия блокировки.

4. services.CoAuthoring.expire.changeindex

Описание: Определяет время (в секундах), в течение которого хранятся индексы изменений документа. Эти индексы используются для отслеживания истории изменений.

Тип: Целое число (секунды).

Значение по умолчанию: «86400» (1 день).

Использование:

  1. Этот параметр влияет на то, как долго сервер хранит информацию о последних изменениях в документе. Это важно для синхронизации изменений между пользователями.
  2. Слишком короткое время может привести к потере данных об изменениях, особенно если пользователи работают с документом с перерывами.

Рекомендации:

  1. Значение по умолчанию («86400») подходит для большинства случаев.
  2. Для интенсивной работы с документами можно увеличить до «172800» (2 дня), чтобы сохранить больше истории изменений.
  3. Не устанавливайте слишком большое значение, чтобы не перегружать кэш сервера.

5. services.CoAuthoring.expire.lockDoc

Описание: Определяет время (в секундах) блокировки документа для предотвращения одновременного редактирования.

Тип: Целое число (секунды).

Значение по умолчанию: «30» (30 секунд).

Использование:

  1. Этот параметр используется для краткосрочных блокировок, связанных с конкретными действиями в редакторе (например, применение форматирования).
  2. Слишком короткое время может привести к конфликтам при редактировании, а слишком длинное — к задержкам для других пользователей.

Рекомендации:

  1. Значение по умолчанию («30») подходит для большинства сценариев.
  2. Если пользователи часто сталкиваются с ошибками блокировки, попробуйте увеличить до «60» секунд.
  3. Не устанавливайте значение больше «120», чтобы избежать ненужных задержек.

6. services.CoAuthoring.expire.message

Описание: Определяет время жизни (в секундах) сообщений, отправленных в чате редактора или связанных с совместной работой.

Тип: Целое число (секунды).

Значение по умолчанию: «86400» (1 день).

Использование:

  1. Этот параметр влияет на то, как долго сообщения хранятся в кэше сервера. Это важно для чатов в редакторе или уведомлений о действиях.
  2. Слишком короткое время может привести к потере важных сообщений, а слишком длинное — к накоплению устаревших данных.

Рекомендации:

  1. Значение по умолчанию («86400») подходит для большинства случаев.
  2. Для интенсивного общения в редакторе можно уменьшить до «43200» (12 часов).
  3. Если сообщения нужно хранить дольше, увеличьте до «172800» (2 дня).

7. services.CoAuthoring.expire.lastsave

Описание: Определяет время жизни (в секундах) записи о последнем успешном сохранении документа в базе данных.

Тип: Целое число (секунды).

Значение по умолчанию: «604800» (7 дней).

Использование:

  1. Этот параметр важен для отслеживания последнего успешного сохранения, чтобы избежать потери данных при сбоях.
  2. Длительное время хранения полезно для восстановления данных после сбоев или длительных перерывов в работе.

Рекомендации:

  1. Значение по умолчанию («604800») подходит для большинства случаев.
  2. Если сервер испытывает проблемы с объемом кэша, можно уменьшить до «86400» (1 день).
  3. Убедитесь, что это значение больше, чем saved, чтобы избежать конфликтов.

8. services.CoAuthoring.expire.forcesave

Описание: Определяет время жизни (в секундах) данных, связанных с принудительным сохранением документа.

Тип: Целое число (секунды).

Значение по умолчанию: «604800» (7 дней).

Использование:

  1. Принудительное сохранение используется для сохранения документа в случае сбоев или завершения сессии.
  2. Этот параметр определяет, как долго данные принудительного сохранения хранятся в кэше.

Рекомендации:

  1. Значение по умолчанию («604800») подходит для большинства случаев.
  2. Если вы хотите быстрее очищать кэш, можно уменьшить до «86400» (1 день).
  3. Убедитесь, что значение синхронизировано с lastsave.

9. services.CoAuthoring.expire.forcesaveLock

Описание: Определяет время жизни (в секундах) принудительно сохраненных блокировок в режиме кластера ioredis.

Тип: Целое число (секунды).

Значение по умолчанию: «5000» (5000 секунд, ~83 минуты).

Использование:

  1. Этот параметр важен для работы в кластерной среде с использованием ioredis, где блокировки могут быть принудительно сохранены для синхронизации.
  2. Слишком короткое время может привести к потере блокировок, а слишком длинное — к накоплению устаревших данных.

Рекомендации:

  1. Значение по умолчанию («5000») подходит для большинства случаев.   Если кластер испытывает проблемы с синхронизацией, попробуйте увеличить до «10000».
  2. Не устанавливайте слишком большое значение, чтобы избежать перегрузки кэша.

10. services.CoAuthoring.expire.saved

Описание: Определяет время жизни (в секундах) данных успешного сохранения документа в базе данных.

Тип: Целое число (секунды).

Значение по умолчанию: «3600» (1 час).

Использование:

  1. Этот параметр определяет, как долго хранится информация об успешном сохранении документа.
  2. Слишком короткое время может привести к потере данных при сбоях, а слишком длинное — к накоплению устаревших записей.

Рекомендации:

  1. Значение по умолчанию («3600») подходит для большинства случаев.
  2. Для интенсивной работы с документами можно увеличить до «7200» (2 часа).
  3. Убедитесь, что это значение меньше, чем lastsave.

11. services.CoAuthoring.expire.documentsCron

Описание: Определяет расписание (в формате cron), по которому сервер проверяет и удаляет старые файлы из кэша.

Тип: Строковый (формат cron).

Значение по умолчанию: «0 */2 * * * *» (каждые 2 часа).

Использование:

  1. Этот параметр управляет очисткой кэша от устаревших файлов документов, чтобы освободить место.
  2. Слишком частая проверка может увеличить нагрузку на сервер, а слишком редкая — привести к накоплению данных.

Рекомендации:

  1. Значение по умолчанию («0 */2 * * * *») подходит для большинства случаев.
  2. Для серверов с большим количеством документов можно установить проверку реже, например, «0 */4 * * * *» (каждые 4 часа).
  3. Используйте онлайн-инструменты для проверки синтаксиса cron-выражений.

12. services.CoAuthoring.expire.files

Описание: Определяет время жизни (в секундах) временных папок в каталоге App_Data.

Тип: Целое число (секунды).

Значение по умолчанию: «86400» (1 день).

Использование:

  1. Этот параметр определяет, как долго временные файлы документов хранятся в папке App_Data.
  2. Слишком короткое время может привести к потере данных, а слишком длинное — к переполнению хранилища.

Рекомендации:

  1. Значение по умолчанию («86400») подходит для большинства случаев.
  2. Если место на диске ограничено, уменьшите до «43200» (12 часов).
  3. Убедитесь, что это значение синхронизировано с filesCron.

13. services.CoAuthoring.expire.filesCron

Описание: Определяет расписание (в формате cron) для проверки и удаления устаревших папок в App_Data.

Тип: Строковый (формат cron).

Значение по умолчанию: «00 00 */1 * * *» (каждый день в полночь).

Использование:

  1. Этот параметр управляет периодичностью очистки папок в App_Data.
  2. Слишком частая проверка может нагружать сервер, а слишком редкая — привести к накоплению данных.

Рекомендации:

  1. Значение по умолчанию («00 00 */1 * * *») подходит для большинства случаев.
  2. Для серверов с большим объемом данных можно установить проверку реже, например, «00 00 */2 * * *» (каждые 2 дня).
  3. Используйте онлайн инструменты для проверки синтаксиса cron-выражений.

14. services.CoAuthoring.expire.filesremovedatonce

Описание: Определяет максимальное количество папок, которые сервер удаляет за один цикл очистки кэша.

Тип: Целое число.

Значение по умолчанию: «100».

Использование:

  1. Этот параметр ограничивает количество одновременно удаляемых папок, чтобы снизить нагрузку на сервер во время очистки.
  2. Слишком большое значение может вызвать пиковую нагрузку, а слишком маленькое — замедлить процесс очистки.

Рекомендации:

  1. Значение по умолчанию («100») подходит для большинства случаев.
  2. Для серверов с высокой производительностью можно увеличить до «500».
  3. Для серверов с ограниченными ресурсами уменьшите до «50».

15. services.CoAuthoring.expire.sessionidle

Описание: Определяет время жизни (в формате времени, например, «1s», «1m», «1h», «1d») неактивной сессии пользователя. Неактивность подразумевает отсутствие действий в редакторе, включая перемещение курсора.

Тип: Строковый (формат времени).

Значение по умолчанию: «1h» (1 час).

Использование:

  1. Этот параметр определяет, как долго неактивный пользователь может оставаться подключенным к сессии редактирования. По истечении этого времени пользователь отключается, а документ сохраняется.
  2. Слишком короткое время может прерывать работу пользователей, а слишком длинное — увеличивать нагрузку на сервер.

Рекомендации:

  1. Значение по умолчанию («1h») подходит для большинства случаев.
  2. Для интенсивной работы можно уменьшить до «30m».
  3. Для сценариев с редкими действиями можно увеличить до «2h».

16. services.CoAuthoring.expire.sessionabsolute

Описание: Определяет максимальное время жизни (в формате времени) любой сессии редактирования, независимо от активности пользователя.

Тип: Строковый (формат времени).

Значение по умолчанию: «30d» (30 дней).

Использование:

  1. Этот параметр ограничивает общее время, в течение которого сессия может существовать, даже если пользователь активен.
  2. Длительное время полезно для долгосрочных проектов, но может увеличить нагрузку на сервер.

Рекомендации:

  1. Значение по умолчанию («30d») подходит для большинства случаев.
  2. Для краткосрочных задач можно уменьшить до «7d».
  3. Убедитесь, что значение больше, чем sessionidle.

17. services.CoAuthoring.expire.sessionclosecommand

Описание: Определяет время (в формате времени) до истечения срока действия sessionidle или sessionabsolute, за которое пользователю отправляется предупреждающее сообщение о скором завершении сессии.

Тип: Строковый (формат времени).

Значение по умолчанию: «2m» (2 минуты).

Использование:

  1. Этот параметр позволяет уведомить пользователя о скором отключении, чтобы он успел сохранить изменения.
  2. Слишком короткое время может не дать пользователю достаточно времени для реакции.

Рекомендации:

  1. Значение по умолчанию («2m») подходит для большинства случаев.
  2. Для более комфортной работы можно увеличить до «5m».
  3. Не устанавливайте слишком большое значение, чтобы избежать путаницы.

18. services.CoAuthoring.expire.pemStdTTL

Описание: Определяет время жизни (в формате времени) PEM-файлов, содержащих секреты для шифрования.

Тип: Строковый (формат времени).

Значение по умолчанию: «1h» (1 час).

Использование:

  1. Этот параметр управляет сроком действия ключей шифрования, используемых для защиты данных.
  2. Слишком короткое время может привести к частому обновлению ключей, а слишком длинное — к снижению безопасности.

Рекомендации:

  1. Значение по умолчанию («1h») подходит для большинства случаев.
  2. Для повышения безопасности можно уменьшить до «30m».
  3. Убедитесь, что значение синхронизировано с pemCheckPeriod.

19. services.CoAuthoring.expire.pemCheckPeriod

Описание: Определяет периодичность (в формате времени) проверки срока действия PEM-файлов.

Тип: Строковый (формат времени).

Значение по умолчанию: «10m» (10 минут).

Использование:

  1. Этот параметр определяет, как часто сервер проверяет, истек ли срок действия PEM-файлов.
  2. Слишком частая проверка может нагружать сервер, а слишком редкая — привести к использованию устаревших ключей.

Рекомендации:

  1. Значение по умолчанию («10m») подходит для большинства случаев.
  2. Для серверов с высокой нагрузкой можно увеличить до «20m».
  3. Убедитесь, что значение меньше, чем pemStdTTL.

20. services.CoAuthoring.expire.updateVersionStatus

Описание: Определяет время (в формате времени), через которое пользователь может повторно открыть документ после ошибки, связанной с использованием старого ключа для уже сохраненного файла.

Тип: Строковый (формат времени).

Значение по умолчанию: «5m» (5 минут).

Использование:

  1. Этот параметр помогает избежать конфликтов при попытке открыть устаревшую версию документа.
  2. Слишком короткое время может не дать достаточно времени для синхронизации, а слишком длинное — замедлить доступ.

Рекомендации:

  1. Значение по умолчанию («5m») подходит для большинства случаев.
  2. Для интенсивной работы можно уменьшить до «2m».
  3. Не устанавливайте слишком большое значение, чтобы избежать задержек.

21. services.CoAuthoring.expire.monthUniqueUsers

Описание: Определяет время жизни (в формате времени) списка уникальных пользователей за месяц, используемого для аналитики.

Тип: Строковый (формат времени).

Значение по умолчанию: «1y» (1 год).

Использование:

  1. Этот параметр используется для хранения данных о пользователях, работавших с сервером в течение месяца.
  2. Слишком короткое время может привести к потере аналитических данных.

Рекомендации:

  1. Значение по умолчанию («1y») подходит для большинства случаев.
  2. Для серверов с ограниченным хранилищем можно уменьшить до «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"

}

}

}

""

Общие рекомендации

  1. Тестирование изменений: Перед внесением изменений в параметры убедитесь, что вы протестировали их на тестовой среде, так как некорректные значения могут повлиять на производительность или доступность документов.
  2. Резервное копирование: Всегда сохраняйте резервную копию конфигурации перед внесением изменений.
  3. Мониторинг: Используйте инструменты мониторинга для отслеживания влияния изменений на производительность сервера (например, использование памяти, процессора и диска).
  4. Синхронизация параметров: Убедитесь, что связанные параметры (например, lastsave и saved, pemStdTTL и pemCheckPeriod) имеют логически согласованные значения.
Была ли полезна статья?
Позвольте нам стать лучше
Дополнительные материалы