Главная
» Как сделать
»
Предотвратите нехватку памяти VPS на сервере документов ONLYOFFICE.
Предотвратите нехватку памяти VPS на сервере документов ONLYOFFICE.
Если ONLYOFFICE Document Server аварийно завершает работу или перезапускается из-за нехватки памяти на вашем VPS, сначала подтвердите факт нехватки памяти и проверьте, не превышен ли лимит памяти Docker. Затем выделите достаточно физической оперативной памяти для рабочей нагрузки и добавьте файл подкачки только в качестве резервного буфера; многократный перезапуск редактора не устранит постоянную нехватку ресурсов.
1. Докажите, что причиной сбоя является нехватка памяти.
Начните с Linux VPS, а не с настроек интеграции ONLYOFFICE. Сообщение браузера типа «Документ не может быть загружен» также может быть вызвано проблемами с сетью или аутентификацией, поэтому важно установить, действительно ли процесс завершился из-за ошибки нехватки памяти (OOM) в Linux.
Выполните эти команды через SSH. Замените onlyoffice-document-serverна имя контейнера, указанное в docker ps -a:
free -hОтображает доступный объем оперативной памяти и файла подкачки хоста. docker statsИзмеряет объем памяти работающего контейнера, в то время как команда inspect сообщает о состоянии контейнера, прерванном из-за нехватки памяти (OOM), последнем коде завершения и настроенных ограничениях ресурсов в байтах. Ненулевое HostConfig.Memoryзначение указывает на явное ограничение объема памяти. Статистика памяти Docker может исключать некоторые файловые кэши, поэтому ее следует сравнивать с измерениями хоста, а не рассматривать как полную картину. См. справочник по статистике Docker .
Пример проверки памяти: сравните доступный объем оперативной памяти хоста с использованием и лимитом контейнера документ-сервера; отображаемые значения являются иллюстративными.
Если контейнер остановлен, docker statsневозможно отобразить его предыдущее пиковое значение. Вместо этого проверьте журнал ядра и последние сообщения приложений:
Сообщения ядра, содержащие упоминания «Недостаточно памяти» или «Завершенный процесс», помогают идентифицировать задействованный процесс. OOMKilled=trueЭто является веским доказательством события falseнехватки памяти в контейнере, но не исключает возможности завершения дочернего процесса ядром хоста, пока контейнер продолжает работу. Аналогично, код завершения 137 лишь подтверждает завершение работы с помощью SIGKILL, но не указывает на его причину. Если доказательств нехватки памяти нет, следует изучить журналы и сбои подключения, прежде чем покупать дополнительную оперативную память.
Пример исследования ошибки нехватки памяти: вместо диагностики сбоя памяти на основе ошибки браузера следует проверять состояние контейнера и сообщения ядра.
2. Перед настройкой чего-либо еще выделите VPS достаточно оперативной памяти.
По состоянию на октябрь 2026 года в официальном файле README Docker Server от ONLYOFFICE указано, что рекомендуемые требования включают 4 ГБ или более оперативной памяти и не менее 2 ГБ файла подкачки. В отдельной официальной документации по установке в один клик указано 4 ГБ оперативной памяти для тестовых сред Docker, рекомендуется 8 ГБ или более для производственной среды, а в требованиях к установщику указано не менее 4 ГБ файла подкачки. Эти документы описывают различные контексты развертывания, поэтому не следует рассматривать 4 ГБ как гарантию надежной работы в производственной среде.
Если на вашем VPS всего 1–2 ГБ оперативной памяти, наиболее разумным решением для установки на основе Docker будет увеличение объема оперативной памяти. Если же у него уже 4 ГБ, проверьте, сколько памяти потребляют операционная система, база данных, обратный прокси, Nextcloud и другие контейнеры. Сервер, который работает без сбоев, может испытывать нехватку памяти, когда несколько пользователей одновременно открывают документы или конвертируют большие электронные таблицы.
На загруженном хосте используйте этот метод ps aux --sort=-rss | headдля выявления процессов, интенсивно использующих память, и повторите процедуру docker statsво время показательной сессии редактирования. Зарезервируйте место для остальной части машины, вместо того чтобы выделять всю доступную оперативную память только для ONLYOFFICE. Если постоянная нагрузка превышает возможности хоста, переместите конкурирующие сервисы или обновите VPS; изменение на уровне приложения не может привести к нехватке физической памяти.
Проверьте наличие случайного превышения лимита памяти в Docker.
Контейнеры Docker по умолчанию не имеют жесткого ограничения по памяти, но развертывание может установить его с помощью команды `docker --memoryrun` или `compose` mem_limit. Например, ограничение в 2 ГБ для контейнера может привести к ошибкам нехватки памяти (OOM kill), даже если на хосте с 8 ГБ оперативной памяти достаточно. Перед изменением проверьте фактическое ограничение. Если ограничение неоправданно низкое, скорректируйте исходную конфигурацию Docker run или Compose до значения, обоснованного измерениями и оставшейся мощностью хоста. См. документацию Docker по ограничениям ресурсов и спецификацию службы Compose .
Не устанавливайте без ограничений выделение памяти на общем VPS: это может привести к сбоям из-за нехватки памяти (OOM) в других сервисах. Также проверьте --memory-swapнастройки Compose memswap_limit; Docker учитывает суммарный объем оперативной памяти и файла подкачки в этом параметре. Одинаковые значения оперативной памяти и суммарного лимита фактически отключают файл подкачки для контейнера. Если вы управляете ONLYOFFICE с помощью Compose, внесите изменения в его файл Compose, чтобы параметр сохранялся при повторном создании контейнера.
3. Добавьте буфер подкачки, если на VPS его нет.
Файл подкачки может компенсировать временный всплеск потребления памяти, но хранится на диске и работает гораздо медленнее, чем оперативная память. Проверьте swapon --showэто df -h /в первую очередь. В следующем примере добавляется файл подкачки размером 2 ГиБ на VPS, использующий совместимую локальную файловую систему, такую как ext4, когда файл /swapfileподкачки еще не существует и провайдер разрешает его использование:
Новый файл подкачки должен сохраняться только после swaponуспешного выполнения операции. Проверьте наличие существующей записи с помощью команды grep -F '/swapfile' /etc/fstab`;`; если записи нет, добавьте её один раз:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Создание файлов подкачки на Btrfs, сетевых файловых системах и некоторых других конфигурациях требует иного подхода. Не следует запускать эти команды поверх существующего файла подкачки и предполагать, что fallocateони работают везде. В руководстве по команде `swaping` в Linux объясняются ограничения файловых систем. Если VPS регулярно использует файл подкачки при обычной нагрузке на редактирование, отдайте приоритет увеличению оперативной памяти, а не увеличению размера файла подкачки.
Пример проверки файла подкачки: устройство подкачки и общий объем файла подкачки видны, но само по себе наличие файла подкачки не доказывает достаточность объема оперативной памяти.
4. Повторно проверьте сервер при реалистичной нагрузке на редактирование.
Изменение плана VPS или включение подкачки часто не требует редактирования конфигурации ONLYOFFICE. Если вы изменили параметр развертывания Docker, запланируйте техническое обслуживание и сохраните существующие точки монтирования, секреты, пути к сертификатам и параметры интеграции при применении изменений. В документации README для Docker ONLYOFFICE указано documentserver-prepare4shutdown.shо плановых отключениях, и предупреждается, что отключение редакторов может занять несколько минут. Не следует бездумно создавать или перезапускать активно используемый сервер документов, поскольку это может повлиять на несохраненные изменения.
Когда сервис будет готов, убедитесь, что контейнер запущен, и снова проверьте объем используемой памяти:
Последняя проверка использует внутреннюю информационную конечную точку, указанную в официальной проверке работоспособности ONLYOFFICE Docker Compose ; запустите её внутри контейнера, поскольку порт 8000 может быть не опубликован на VPS. Ответ конечной точки показывает доступность сервиса, но это не обязательно означает, что все интеграции с хранилищем или обратные вызовы сохранения работают.
Пример проверки: убедитесь, что контейнер остается запущенным, использование памяти не превышает установленного лимита, и внутренняя информационная конечная точка отвечает.
Убедитесь, что проблема с памятью решена.
Откройте небольшой документ, а затем один репрезентативный большой документ через вашу интеграцию Nextcloud, ownCloud или другую. Сохраните безобидные изменения и убедитесь, что они отображаются после повторного открытия файла. Продолжайте отслеживать free -hжурналы ошибок, связанных с нехваткой docker statsпамяти ядра (Kynel OOM), в течение периода использования, который ранее вызывал сбои.
Успешное исправление означает, что обычные документы продолжают открываться и сохраняться, использование памяти остается в пределах лимитов VPS и контейнера, и новые сообщения об ошибке нехватки памяти (OOM) не появляются. Если сбои прекращаются только при низкой активности, VPS все еще не имеет запаса по пиковой нагрузке; выбирайте размер оперативной памяти для этой пиковой нагрузки, а не полагайтесь на непрерывный подкачок. Если оперативная память остается доступной и новых сообщений об ошибке не появляется, но документы по-прежнему не обрабатываются, переключитесь на анализ журналов ONLYOFFICE, обратного прокси-сервера или вашего коннектора хранилища вместо внесения дальнейших изменений в память.