Исправлена ​​ошибка, вызывающая предупреждение Nextcloud об ограничении памяти PHP.

Чтобы устранить предупреждение Nextcloud о превышении лимита памяти PHP, установите memory_limitзначение не менее 512 МБ 512Mв конфигурации PHP, используемой веб-сервером, а затем перезапустите или перезагрузите соответствующую службу PHP. В текущем стабильном руководстве администратора Nextcloud рекомендуется использовать значение не менее 512 МБ для этого параметра PHP. Наиболее распространенная причина, по которой предупреждение остается после редактирования файла, заключается в том, что веб-сервер использует другую конфигурацию PHP, отличную от конфигурации PHP, установленной через командную строку.

Выберите процедуру, соответствующую вашей конфигурации развертывания: Apache с mod_php, Apache или Nginx с PHP-FPM, контейнер или управляемый пакет Nextcloud. Не изменяйте случайный параметр хоста php.iniи не предполагайте, что он используется во всех развертываниях. Проверьте результат на странице обзора администрирования Nextcloud, которая отражает конфигурацию веб-приложения.

Что означает это предупреждение?

Параметр `php` memory_limitуказывает максимальный объем памяти, который может выделить один PHP-скрипт. Это не общий объем оперативной памяти, зарезервированный для Nextcloud, и он не увеличивает физическую память, доступную серверу. В руководстве Nextcloud указано, что для этого параметра следует установить не менее 512 МБ. Отдельно в системных требованиях поясняется, что фактические потребности сервера в памяти зависят от пользователей, приложений, файлов и активности; рекомендуется не менее 512 МБ оперативной памяти на каждый PHP-процесс, а минимум — 128 МБ.

Увеличение лимита PHP может устранить предупреждение о конфигурации и предоставить больше места для ресурсоемких запросов. Однако это не может добавить оперативную память на недостаточно мощный сервер, исправить утечку памяти или гарантировать успешное завершение работы каждого приложения. Если сервер уже испытывает нехватку памяти, более высокий лимит на один запрос может увеличить риск того, что одновременно работающие PHP-процессы исчерпают системную оперативную память.

Какие параметры конфигурации PHP следует отредактировать?

Сначала определите, как PHP запускает Nextcloud. Проверка в терминале, например, с помощью команды `pip install php --ininextcloud`, покажет конфигурацию командной строки (CLI). Веб-запросы Nextcloud могут использовать отдельный модуль Apache или службу PHP-FPM с другим модулем php.iniили пулом переопределений. Nextcloud специально отмечает, что веб- и CLI-запросы PHP могут использовать разные файлы конфигурации.

В системах, основанных на Debian, обычно используются пути /etc/php/8.x/apache2/php.iniдля модуля PHP Apache и /etc/php/8.x/fpm/php.iniдля PHP-FPM. Фактическая версия PHP и имена каталогов могут различаться. В других дистрибутивах часто используются другие пути, например, общий каталог /etc/php.ini. Рассматривайте это только как примеры; используйте менеджер пакетов, конфигурацию службы и среду выполнения PHP для определения местоположения активного файла.

Для просмотра конфигурации командной строки выполните следующую команду:

php --ini
php -i | grep -i '^memory_limit'

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

Как установить ограничение для Apache или PHP-FPM?

Перед внесением изменений в активный конфигурационный файл сделайте его резервную копию. В нужном файле php.iniнайдите существующую memory_limitстроку и установите для нее значение 512Mили более высокое значение, выбранное для вашей рабочей нагрузки:

memory_limit = 512M

Используйте одну активную настройку вместо добавления дублирующихся строк в конец нескольких файлов. Пул PHP-FPM также может определять значения для своих рабочих процессов, поэтому проверьте конфигурацию пула, если значение php.iniне вступает в силу. Некоторые развертывания PHP поддерживают настройку для каждого каталога .user.ini; активна ли она, зависит от конфигурации сервера и должно быть подтверждено администратором.

Apache использует mod_php

Отредактируйте настройки, php.iniиспользуемые Apache, сохраните их, а затем перезапустите Apache, чтобы модуль перезагрузил свои параметры. Названия служб различаются. В Debian или Ubuntu служба обычно называется apache2; в системах семейства RHEL обычно это httpd. Используйте название службы, соответствующее вашей операционной системе и процедурам обслуживания.

sudo systemctl restart apache2

Замените, apache2если в вашем дистрибутиве используется другое имя модуля. Если Nextcloud обслуживается через PHP-FPM вместо mod_php, перезапуск Apache сам по себе не приведет к перезагрузке PHP-воркеров.

Apache или Nginx с использованием PHP-FPM

Отредактируйте конфигурацию PHP-FPM, фактически используемую сайтом. После сохранения изменений перезапустите или перезагрузите соответствующую службу PHP-FPM. В её модуль может входить версия PHP, например php8.3-fpm, или использоваться другое имя, специфичное для поставщика.

sudo systemctl restart php8.3-fpm

Используйте правильное имя службы для установленной вами версии PHP. Nginx перенаправляет PHP-запросы в FPM, поэтому изменение настроек PHP обычно требует применения изменений к FPM; перезапуск Nginx сам по себе не перезагружает лимит памяти PHP. Если конфигурация пула PHP-FPM переопределяет параметр memory_limit, измените настройку пула или удалите переопределение, а затем перезапустите пул.

А что, если Nextcloud будет работать в Docker, AIO, Snap или другом пакете?

Используйте механизм конфигурации, соответствующий выбранному методу установки. Редактирование PHP-файлов хоста обычно не изменяет среду выполнения PHP внутри контейнера или изолированного пакета. В официальном образе Docker Nextcloud описана PHP_MEMORY_LIMITпеременная среды, значение которой по умолчанию 512Mв текущей документации образа равно нулю. Установите её в файле Compose или в конфигурации контейнера, затем пересоздайте или перезапустите контейнер приложения в соответствии с процедурой развертывания.

environment:
  PHP_MEMORY_LIMIT: 512M

Не копируйте эти настройки для каждого типа установки. В руководстве Nextcloud указано, что готовые среды, такие как AIO, Snap, NCP и Community Docker, имеют предварительно настроенный PHP, и администраторам рекомендуется обратиться к инструкциям по настройке для конкретного пакета. Для таких конфигураций используйте поддерживаемый интерфейс или документацию для соответствующего пакета. Постоянное монтирование томов и сгенерированная конфигурация также могут переопределить однократное ручное редактирование.

Как можно убедиться, что предупреждение исправлено?

  1. Примените изменения к конфигурации PHP, доступной через веб-интерфейс, и перезапустите или перезагрузите соответствующий веб/PHP-сервис.
  2. Войдите в Nextcloud как администратор и откройте «Настройки» > «Администрирование» > «Обзор» .
  3. Обновите страницу и просмотрите предупреждения о конфигурации. Убедитесь, что предупреждение об ограничении памяти PHP исчезло.
  4. Выполните типичную операцию, которая ранее вызывала предупреждение, например, задачу затронутого приложения, и просмотрите журналы Nextcloud и PHP на наличие сообщений об исчерпании памяти.

Если вы также запускаете фоновые задания Nextcloud через системный cron, проверьте конфигурацию PHP в командной строке отдельно. Предупреждение, отображаемое в веб-интерфейсе, можно удалить, в то время как задания в командной строке по-прежнему используют более низкий лимит. Подтвердите значение CLI с помощью php --iniтого php -iже исполняемого файла PHP, который используется командой cron.

Когда следует повышать значение выше 512 млн?

Устанавливайте ограничение только тогда, когда предупреждение исчезло, но документированная рабочая нагрузка все еще достигает лимита PHP, или когда рекомендации по поддержке приложения требуют большего. Сначала проверьте фактическую память сервера, количество рабочих процессов PHP-FPM, память базы данных и другие службы. Поскольку PHP применяет ограничение к каждому скрипту, несколько загруженных рабочих процессов могут одновременно использовать значительный объем памяти. Установите измеренное ограничение, соответствующее бюджету памяти хоста, вместо использования параметра `--fpm` -1, который, согласно документации PHP, не имеет ограничений по памяти.

Если предупреждение исчезло, но сервер по-прежнему замедляется или процессы завершаются с ошибкой, проверьте использование системной памяти и файла подкачки, журналы PHP-FPM и журналы Nextcloud. Рассмотрите, не потребляет ли какое-либо конкретное приложение или запрос чрезмерное количество памяти. Кэш в памяти, такой как APCu или Redis, решает проблемы кэширования и производительности; он не заменяет настройку PHP memory_limit. Изменяйте по одному фактору за раз, чтобы определить, улучшился ли результат.

Быстрая проверка по симптомам

  • Предупреждение остается и после редактирования файла php.ini: проверьте, редактировали ли вы файл CLI вместо файла Apache/FPM, или же его переопределяет какая-либо настройка пула.
  • Предупреждение исчезает, но задача cron по-прежнему завершается с ошибкой: проверьте исполняемый файл PHP для командной строки и его отдельную конфигурацию.
  • После перезапуска веб-сервер возвращает ошибку: проверьте состояние и журналы веб-сервера или службы PHP-FPM и восстановите резервную копию, если изменение конфигурации привело к сбою при запуске.
  • Предупреждение исчезает, но на хосте заканчивается оперативная память: уменьшите параллелизм, добавьте память или определите процесс, использующий память, прежде чем еще больше увеличивать лимит PHP.
  • Если вы используете контейнер или готовый пакет, измените поддерживаемые PHP-настройки пакета, а не файл php.ini хоста.

Официальные ссылки

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

10 лучших инструментов для сканирования сети с помощью команды ping, позволяющих находить устройства в вашей сети.

10 лучших инструментов для сканирования сети с помощью команды ping, позволяющих находить устройства в вашей сети.

Сравните 10 инструментов для сканирования сети (ping sweep) для быстрого обнаружения локальных сетей, кроссплатформенного сканирования и управления IP-адресами. Узнайте, что может — и чего не может — показать сканирование.

6 лучших инструментов управления сетью для отслеживания производительности

6 лучших инструментов управления сетью для отслеживания производительности

Сравните шесть инструментов управления сетью для мониторинга производительности, включая покрытие SNMP, сопоставление, оповещения, модели развертывания и компромиссы в отношении стоимости.

Лучшие анализаторы Wi-Fi для Windows, iOS и Android

Лучшие анализаторы Wi-Fi для Windows, iOS и Android

Сравните лучшие программы для анализа Wi-Fi-сетей для Windows, iPhone и Android, включая инструменты для оценки загруженности каналов, зоны покрытия сигнала, тепловых карт и устранения неполадок в сети.

Ping Monitor: 7 бесплатных инструментов с открытым исходным кодом для проверки доступности сети

Ping Monitor: 7 бесплатных инструментов с открытым исходным кодом для проверки доступности сети

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

QoS в сетях: что делает качество обслуживания и как оно работает.

QoS в сетях: что делает качество обслуживания и как оно работает.

Узнайте, что означает QoS в сетях, как маркировка DSCP и очереди трафика определяют приоритет голосовых, видео- и бизнес-приложений, и что QoS не может исправить.

Лучшее программное обеспечение SFTP-сервера для безопасной передачи файлов.

Лучшее программное обеспечение SFTP-сервера для безопасной передачи файлов.

Сравните надежные SFTP-серверы для Windows и Linux, включая OpenSSH, Bitvise, SolarWinds и SFTPGo. Найдите подходящее решение для ваших потребностей в области безопасности и передачи файлов.

7 лучших инструментов для управления IP-адресами для сетевых команд

7 лучших инструментов для управления IP-адресами для сетевых команд

Сравните семь инструментов управления IP-адресами для обнаружения подсетей, координации DNS и DHCP, инвентаризации сети и управления IP-адресами с открытым исходным кодом.

Рекомендации по мониторингу сети: что отслеживать и какие инструменты использовать.

Рекомендации по мониторингу сети: что отслеживать и какие инструменты использовать.

Создайте практичную систему мониторинга сети с четким охватом устройств, полезными показателями производительности, действенными оповещениями и сравнением SolarWinds NPM, PRTG и OpManager.

10 лучших инструментов для сканирования сети, позволяющих обнаруживать устройства и IP-адреса.

10 лучших инструментов для сканирования сети, позволяющих обнаруживать устройства и IP-адреса.

Сравните инструменты сканирования сети для быстрого обнаружения устройств, кроссплатформенного сканирования IP-адресов и корпоративного управления IP-адресами, получив рекомендации по подбору подходящего варианта для вашей сети.

Как использовать Nmap для трассировки маршрута и чтения сетевого пути

Как использовать Nmap для трассировки маршрута и чтения сетевого пути

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