Увеличьте лимит памяти контейнера кода без догадок.

Чтобы увеличить объем памяти, выделяемой контейнеру Collabora Online CODE, увеличьте лимит Docker в конфигурации, которая его создает, затем пересоздайте контейнер и подтвердите фактический лимит с помощью команд docker inspectили docker stats. Увеличение параметра приложения не увеличивает лимит контейнеров Docker, и хост или виртуальная машина Docker Desktop должны иметь достаточно памяти для соблюдения более высокого лимита.

В качестве гипотетического примера используется следующее: Райли администрирует развертывание Docker Compose на одном хосте. Предположим, docker statsчто установлен лимит в 2 ГиБ, и использование ресурсов близко к этому пределу при одновременном открытии нескольких документов. Райли рассматривает возможность ограничения лимитом в 4 ГиБ. Эти цифры являются лишь примерами, а не рекомендациями по выбору размера хранилища Collabora, заявлениями о производительности или результатами тестирования; ваш лимит должен определяться исходя из наблюдаемой нагрузки и производительности хоста.

1. Убедитесь, что контейнер действительно достигает своей крышки.

Выполните следующие команды на хосте Docker, заменив collaboraна фактическое имя контейнера:

docker stats --no-stream collabora
docker inspect --format 'Memory={{.HostConfig.Memory}} OOMKilled={{.State.OOMKilled}}' collabora

docker statsОтображает текущее использование и лимит контейнера. В выводе команды `inspect` отображается настроенный лимит памяти в байтах и ​​информация о том, регистрирует ли Docker контейнер как "OOM-killed". Значение `inspect`, равное `--`, означает, что у 0Docker нет явного жесткого ограничения для этого контейнера; это не означает, что машина имеет неограниченный объем оперативной памяти. Высокое значение само по себе не является доказательством события нехватки памяти, поэтому сравните его с историей перезапусков, журналами и временем, когда пользователи наблюдали сбои.

В терминале отображается пример вывода команды docker stats, демонстрирующий гипотетический контейнер Collabora, использующий 1,8 ГиБ памяти при ограничении в 2 ГиБ.
Гипотетический диагностический пример: контейнер CODE приближается к заданному пределу в 2 ГиБ.

Перед увеличением лимита проверьте, сколько оперативной памяти осталось для операционной системы и других служб. Рекомендации Docker по использованию ресурсов советуют тестировать нагрузку приложения и запускать контейнеры на хостах с достаточными ресурсами. В Docker Desktop также проверьте раздел «Настройки > Ресурсы» : память, выделенная виртуальной машине Docker, является отдельным лимитом, разделяемым между ее контейнерами. Увеличение лимита CODE сверх этого выделения не приведет к увеличению объема физической памяти; см. настройки ресурсов Docker Desktop .

2. Измените лимит службы Compose.

Отредактируйте существующую службу CODE в файле Compose. Сохраните текущий тег образа, порты, окружение, тома, сети и политику перезапуска; добавьте или обновите только параметр памяти. Для гипотетического примера Райли с 4 ГиБ:

services:
  collabora:
    image: collabora/code:your-current-tag
    mem_limit: 4g
    # Keep the service’s existing settings below
Создайте иллюстрацию в YAML-редакторе, выделяющую параметр mem_limit: 4g, в рамках сервиса Collabora, используя существующий тег изображения.
Пример использования Compose: установить ограничение на объем памяти на уровне сервиса, сохранив при этом развернутый тег образа CODE.

В этом примере используется официальный образ Docker CODE от Collabora ; сохраните тег, уже используемый вашим развертыванием. mem_limitЭто жесткое ограничение, а не резервирование: Docker может разрешить контейнеру использовать до этого объема, но этот параметр не резервирует столько оперативной памяти на хосте. В справочнике по сервису Docker Compose определено mem_limitи указано, что он должен соответствовать, deploy.resources.limits.memoryесли присутствуют оба параметра. Если ваше развертывание использует оркестратор или управляемый платформой файл Compose, используйте поддерживаемое поле ресурса этой платформы и поддерживайте согласованность значений ограничения на дублирование.

Если вы запустили CODE напрямую с помощью команды `compose` docker run, воссоздайте его из исходной команды с помощью `compose` --memory=4gи сохраните все его текущие параметры. Для быстрого изменения параметров существующего контейнера Linux во время выполнения Docker также поддерживает `compose` docker update --memory 4g <container_name>. Рассматривайте файл Compose или исходную команду запуска как источник достоверной информации, чтобы последующая замена не восстановила старые ограничения. См. справочник по обновлению контейнеров Docker .

3. Пересоздайте код, чтобы вступило в силу сохраненное ограничение.

В каталоге, содержащем активный файл Compose, проверьте объединенную конфигурацию, затем воссоздайте только службу CODE:

docker compose config
docker compose up -d --no-deps --force-recreate collabora

Используйте ключ службы из вашего файла вместо collabora. Перед применением проверьте сгенерированную конфигурацию на предмет нового ограничения. Повторное создание CODE кратковременно прерывает сеансы редактирования, зависящие от этого контейнера, поэтому запланируйте изменение на время, когда допустимо кратковременное прерывание работы службы. Не удаляйте тома и не запускайте docker compose down -v; эти операции не нужны для изменения ограничения памяти и могут удалить постоянные данные, принадлежащие другим службам.

Иллюстрация терминала, показывающая конфигурацию docker compose, за которой следует команда docker compose up без зависимостей и принудительное пересоздание сервиса collabora.
Примените отредактированную конфигурацию Compose и создайте заново только службу CODE.

4. Проверьте новый конденсатор и протестируйте его работу под нагрузкой.

После возврата сервиса проверьте сам контейнер, а не только YAML-файл:

docker inspect --format 'Memory={{.HostConfig.Memory}} OOMKilled={{.State.OOMKilled}}' collabora
docker stats --no-stream collabora

В качестве примера 4g, вывод команды inspect должен представлять примерно 4 ГиБ в байтах и docker stats​​показывать предел около 4 ГиБ. Изображение ниже использует пример вывода только для иллюстрации. Затем понаблюдайте за КОДОМ при открытии типов документов и приблизительного количества одновременных сессий, важных для вашего развертывания. Убедитесь, что контейнер продолжает работать, видимые пользователю ошибки прекращаются, а хост сохраняет память для других своих процессов.

Иллюстрация в терминале, показывающая сообщение команды Docker inspect о превышении лимита памяти в 4294967296 байт и вывод команды docker stats о превышении лимита в 4 ГиБ, помеченные как ожидаемый пример выходных данных, а не как тестовый.
Ожидаемый шаблон проверки для вымышленной конфигурации с 4 ГиБ; отображаемые значения являются примером выходных данных, а не результатом измеренных параметров развертывания.

Если проблема сохранится

Если новое ограничение установлено, но CODE по-прежнему перезапускается, проверьте docker inspectсостояние docker logsи события ядра хоста или Docker на наличие записи о нехватке памяти. Если контейнер остается работоспособным, но обработка документов по-прежнему запускает очистку, Docker может быть не активным узким местом. Собственная конфигурация Collabora имеет поведение управления памятью, которое отделено от ограничения cgroup Docker; шаблон конфигурацииcoolwsd проекта описывает его серверные элементы управления. Перед внесением изменений проверьте конфигурацию для установленной вами версии CODE.

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

Оставить комментарий

Увеличьте лимит памяти контейнера кода без догадок.

Увеличьте лимит памяти контейнера кода без догадок.

Проверьте, не ограничивает ли Docker использование Collabora CODE, безопасно увеличьте лимит памяти Compose и убедитесь, что запущенный контейнер получил новое ограничение.

Настройте панели инструментов Collabora CODE без редактирования исходного кода.

Настройте панели инструментов Collabora CODE без редактирования исходного кода.

Упростите работу с Collabora CODE, используя компактный или вложенный режим, а также элементы управления WOPI PostMessage, чтобы безопасно скрывать выбранные кнопки, команды и вкладки.

Запустите Collabora CODE Behind Nginx с завершением TLS-соединения.

Запустите Collabora CODE Behind Nginx с завершением TLS-соединения.

Настройте Nginx на обработку HTTPS для контейнера Collabora CODE, корректное перенаправление WebSockets и проверку общедоступной конечной точки без открытия порта 9980.

Текст должен оставаться видимым при открытии мобильной клавиатуры Collabora.

Текст должен оставаться видимым при открытии мобильной клавиатуры Collabora.

Устранение неполадок с клавиатурой мобильного браузера, скрывающей текст в Collabora Online, с помощью быстрых обходных путей и отдельных проверок для браузеров, встроенных WebView и страниц-хостов.

Остановите ненужную печать и загрузку в ONLYOFFICE.

Остановите ненужную печать и загрузку в ONLYOFFICE.

Установите ограничения на печать и загрузку для ссылок ONLYOFFICE, участников переговорных комнат или сеансов Docs API, а затем проверьте эти ограничения в учетной записи получателя.

Настройте надежное резервное копирование для рабочего пространства ONLYOFFICE.

Настройте надежное резервное копирование для рабочего пространства ONLYOFFICE.

В ONLYOFFICE Workspace укажите место назначения резервного копирования, расписание, охват почты и лимит хранения, а затем убедитесь, что архив готов к восстановлению.

Разверните ONLYOFFICE Docs Enterprise с помощью официального файла конфигурации (Compose File).

Разверните ONLYOFFICE Docs Enterprise с помощью официального файла конфигурации (Compose File).

Запустите стек Enterprise Docker Compose, сохраните его лицензию и данные, безопасно настройте JWT и убедитесь, что редакторы готовы к интеграции.

Чистый текст электронной таблицы с многоразовым макросом ONLYOFFICE

Чистый текст электронной таблицы с многоразовым макросом ONLYOFFICE

Используйте макрос ONLYOFFICE на JavaScript для удаления непечатаемых символов и лишних пробелов в заданном диапазоне электронной таблицы, обеспечивая безопасный процесс проверки.

Измените место хранения по умолчанию в рабочей области ONLYOFFICE.

Измените место хранения по умолчанию в рабочей области ONLYOFFICE.

Переместите данные портала с диска по умолчанию на поддерживаемый облачный провайдер хранения данных или безопасно переместите данные Docker, изменив сопоставление томов хоста.

Полностью удалите ONLYOFFICE Document Server из Linux.

Полностью удалите ONLYOFFICE Document Server из Linux.

Определите, использует ли Document Server пакет Linux или Docker, удалите только его компоненты и проверьте оставшиеся данные, не удаляя по ошибке общие службы.