Исправлена ​​ошибка, вызывающая предупреждение 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 хоста.

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

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

Как настроить бота для работы с матрицами с помощью Python и библиотеки Simple-Matrix-Bot-Lib

Как настроить бота для работы с матрицами с помощью Python и библиотеки Simple-Matrix-Bot-Lib

Создайте бота для Matrix с помощью Python и Simple-Matrix-Bot-Lib, сравните варианты аутентификации и развертывания, протестируйте команды и разберитесь, когда следует использовать matrix-nio вместо этого.

Как установить Jitsi Meet на Ubuntu 24.04 с SSL-сертификатом Let's Encrypt

Как установить Jitsi Meet на Ubuntu 24.04 с SSL-сертификатом Let's Encrypt

Установите Jitsi Meet на Ubuntu 24.04 с настройкой DNS, правилами брандмауэра, официальными репозиториями, SSL-сертификатом Let's Encrypt, проверкой служб и устранением неполадок NAT.

Устраните ошибку «Проверка SSL-сертификата не удалась» в клиенте синхронизации ownCloud Desktop.

Устраните ошибку «Проверка SSL-сертификата не удалась» в клиенте синхронизации ownCloud Desktop.

Устраните ошибки синхронизации сертификатов ownCloud Desktop, проверив URL-адрес сервера, имя и цепочку сертификатов, системное время, версию клиента и хранилище доверенных центров сертификации.

Как настроить кэширование Redis для Nextcloud на Ubuntu 24.04

Как настроить кэширование Redis для Nextcloud на Ubuntu 24.04

Настройка блокировки файлов Redis и распределенного кэширования для Nextcloud на Ubuntu 24.04 с использованием PhpRedis, APCu, службы Redis, работающей только через loopback, и практические шаги проверки.

Исправление ошибок сквозного шифрования (E2EE) в Element Web «Не удалось расшифровать событие».

Исправление ошибок сквозного шифрования (E2EE) в Element Web «Не удалось расшифровать событие».

Устраните ошибки расшифровки Element Web, проверив подлинность устройства, резервную копию ключа, ключи восстановления и отсутствующие ключи комнаты — без риска потери истории сообщений.

Как настроить и обеспечить двухфакторную аутентификацию (2FA) в Nextcloud

Как настроить и обеспечить двухфакторную аутентификацию (2FA) в Nextcloud

Узнайте, как включить поставщиков двухфакторной аутентификации Nextcloud, обеспечить двухфакторную аутентификацию для пользователей или групп, подготовить средства восстановления, а также проверить вход в систему и клиентские приложения.

Как ограничить исходящую пересылку электронной почты по IP-адресу в Zimbra

Как ограничить исходящую пересылку электронной почты по IP-адресу в Zimbra

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

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

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

Установите параметр memory_limit для PHP в Nextcloud не менее чем на 512 МБ, найдите правильную конфигурацию веб-версии PHP, перезапустите Apache или PHP-FPM и убедитесь, что предупреждение исчезло.

Как настроить сервер Matrix Coturn TURN/STUN для аудио- и видеозвонков

Как настроить сервер Matrix Coturn TURN/STUN для аудио- и видеозвонков

Настройте Coturn с Synapse для вызовов Matrix WebRTC. Сконфигурируйте общие учетные данные, NAT, порты брандмауэра, параметры TLS и разграничьте устаревший TURN от MatrixRTC и LiveKit.

Как настроить почтовое приложение Nextcloud с аутентификацией OAuth2

Как настроить почтовое приложение Nextcloud с аутентификацией OAuth2

Настройте почту Nextcloud с использованием OAuth2 для Gmail или Microsoft 365, проверьте доступ по протоколам IMAP/SMTP, устраните проблемы с переадресацией и узнайте об ограничениях.