Исправлено предупреждение Nextcloud «Неправильно настроен PHP OPcache».

Если Nextcloud сообщает об ошибке «PHP OPcache настроен неправильно» , правильное решение — не копировать большой блок настроек из старого сообщения на форуме. Сначала определите, на какое ограничение или настройку OPcache возражает Nextcloud, а затем измените конфигурацию PHP, фактически используемую вашим веб-сервером.

В текущей документации по администрированию Nextcloud 35 OPcache рассматривается как важный уровень повышения производительности PHP. Nextcloud сообщает, что панель администратора выдает соответствующее предупреждение, когда лимит размера OPcache превышает 90% от выделенной емкости. Также требуется сохранение кэшированных комментариев кода. В собственном руководстве PHP описаны соответствующие директивы и их значения по умолчанию. Эти факты позволяют более безопасно настраивать OPcache: увеличивайте только ограниченный ресурс, оставляйте включенным необходимое поведение и избегайте изменений, которые усложняют обновления, если для этого нет веских причин.

На странице обзора административной панели Nextcloud в верхней части отображается предупреждение о конфигурации PHP OPcache.
Предупреждение следует рассматривать как диагностический признак: определите конкретное ограничение OPcache, прежде чем изменять ограничения памяти или количества файлов.

Что обычно означает предупреждение Nextcloud OPcache?

OPcache хранит скомпилированный байт-код PHP в общей памяти, поэтому PHP не нужно анализировать и компилировать одни и те же файлы приложения при каждом запросе. Nextcloud описывает это как функцию повышения производительности, и PHP включает Zend OPcache в ядро ​​начиная с версии PHP 5.5.

Предупреждение может появляться по нескольким причинам. Наиболее распространенные случаи — это почти полное заполнение емкости OPcache, отключение OPcache для веб-SAPI или изменение необходимого поведения, например, сохранения комментариев. В текущем руководстве по настройке Nextcloud указано, что предупреждение о размере отображается, когда лимит размера OPcache превышает 90% от выделенной емкости, и явно требуется opcache.save_comments = 1.

Официальные справочные материалы: руководство по настройке сервера Nextcloud и OPcache , заметки по настройке PHP в Nextcloud и конфигурация среды выполнения PHP OPcache .

Выбирайте решение, исходя из предупреждения, а не универсальное блокирующее действие.

СитуацияЛучшее первое изменениеКомпромисс
Объем памяти OPcache превышает пороговое значение, установленное Nextcloud для предупреждения.opcache.memory_consumptionУмеренно увеличитьИспользует больше общей оперативной памяти, но снижает оборот кэша.
Запертые струны почти заполненыУвеличиватьopcache.interned_strings_bufferПотребляет дополнительную разделяемую память; повышение лимитов для несвязанных задач не дает никаких преимуществ.
Заполненные кэшированные слоты для скриптов/файлов почти исчерпаны.Увеличиватьopcache.max_accelerated_filesБолее крупная хеш-таблица использует больше памяти.
OPcache отключенНастройка opcache.enable=1веб-конфигурации PHPСтандартная и рекомендуемая процедура для Nextcloud; проверьте правильность SAPI.
opcache.save_commentsбыл отключенНаборopcache.save_comments=1Нет веских причин отключать эту функцию, специфичных для Nextcloud; Nextcloud требует сохранения комментариев.

В настоящее время PHP по умолчанию устанавливает значения 128 МБ для opcache.memory_consumption, 8 МБ для opcache.interned_strings_bufferи 10 000 для opcache.max_accelerated_files. Эти значения являются ориентировочными, а не универсальными целевыми значениями Nextcloud. Небольшому персональному серверу может быть достаточно близко к этим значениям, в то время как более крупной установке с большим количеством приложений может потребоваться больший запас ресурсов.

Шаг 1: Подтвердите, какую конфигурацию PHP фактически использует Nextcloud.

Этот шаг предотвращает множество неудачных попыток исправления. В документации Nextcloud указано, что веб-сервер и PHP из командной строки могут загружать разные конфигурационные файлы. В системах типа Debian и Ubuntu распространены пути к файлам /etc/php/<version>/fpm/php.ini, /etc/php/<version>/apache2/php.ini, и /etc/php/<version>/cli/php.ini.

Запустите команду php --ini, чтобы увидеть конфигурацию CLI, но не предполагайте, что это тот же файл, который используется PHP-FPM или Apache. Для веб-версии SAPI используйте временную phpinfo()страницу только в том случае, если вы можете защитить и немедленно удалить ее, или проверьте конфигурацию пула/службы PHP-FPM и файлы модулей, специфичные для вашего дистрибутива.

Рекомендация: если Nextcloud работает за Nginx или Apache с PHP-FPM, измените конфигурацию FPM OPcache. Если Apache использует mod_php, измените конфигурацию Apache PHP. Сохраняйте согласованность конфигурации CLI, если фоновым задачам требуется одинаковое поведение, но помните, что предупреждение браузера генерируется путем веб-запроса.

Шаг 2: Отредактируйте наименьший набор директив OPcache, который решает проблему.

Текстовый редактор отображает конфигурационный файл OPcache с директивами enable, memory, interned strings, accelerated files и save comments.
Отредактируйте конфигурацию OPcache, используемую веб-API. Увеличивайте значение только для ограниченного ресурса, вместо того чтобы слепо копировать слишком большой предустановленный параметр.

Ниже приведён консервативный пример для сервера средней мощности. Числовые значения следует рассматривать как отправные точки, а не как гарантии:

[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.save_comments=1

Если Nextcloud прямо указывает на то, что память OPcache почти заполнена, увеличение объема памяти со 128 МБ до 256 МБ может быть разумным постепенным изменением, если на сервере достаточно свободной оперативной памяти. Если же предупреждение указывает на интернированные строки или кэшированные скрипты, следует увеличить этот лимит, а не только объем памяти. На VPS с ограниченными ресурсами памяти переход сразу к 512 МБ может уменьшить объем оперативной памяти, доступной для рабочих процессов PHP-FPM, базы данных, Redis и операционной системы.

А что насчет настроек повторной проверки?

В текущем руководстве по настройке Nextcloud указано, что PHP по умолчанию проверяет кэшированные скрипты на наличие изменений каждые две секунды, и не дается никаких рекомендаций по изменению этого параметра для всех пользователей. Повышение этого параметра opcache.revalidate_freqможет уменьшить количество проверок файловой системы, но это приведет к изменению операционных параметров: обновления и изменения в приложениях config.phpмогут занять больше времени, прежде чем изменения станут видимыми. Полное отключение проверки временной метки является более агрессивным подходом и может оставить старый код активным до тех пор, пока кэш OPcache не будет очищен вручную или PHP не будет перезапущен.

Для большинства администраторов, пытающихся лишь устранить предупреждение, оставьте opcache.validate_timestampsвсе opcache.revalidate_freqкак есть, если вы не понимаете рабочий процесс развертывания. Nextcloud специально предупреждает, что необычное поведение после обновлений может быть вызвано устаревшим кэшированным кодом, если были изменены параметры повторной проверки.

Шаг 3: Перезапустите соответствующую службу PHP.

После изменения INI-файла перезапустите или перезагрузите процесс PHP, обслуживающий Nextcloud. Типичные примеры — это systemctl restart php8.2-fpmPHP-FPM или перезапуск/перезагрузка Apache при использовании mod_php. Замените версию и имя службы на те, которые фактически используются в вашей системе.

Это особенно важно, если вы изменили поведение повторной проверки. Перезапуск соответствующей службы гарантирует загрузку новой конфигурации OPcache и устраняет неоднозначность в отношении устаревшего байт-кода.

Шаг 4: Проверьте значения, но проверьте также и веб-API.

В терминале отображается вывод команд php --ini и php -i OPcache со статусом включения и ключевыми значениями конфигурации.
Проверки через командную строку полезны для поиска INI-файлов и подтверждения синтаксиса, но веб-интерфейс SAPI может загружать другую конфигурацию.

Полезными проверками из командной строки являются:

php --ini
php -i | grep -i opcache

Эти команды могут подтвердить, что PHP распознает директивы, но они лишь проверяют конфигурацию CLI. Если предупреждение Nextcloud остается, сравните загруженную конфигурацию веб-SAPI с результатом CLI. Это особенно важно в системах, которые поддерживают отдельные деревья cli, fpm, и apache2INI.

Шаг 5: Повторно проверьте раздел «Администрирование» > «Обзор».

Обзор администрирования Nextcloud без предупреждения OPcache и с обычными индикаторами состояния системы.
После перезагрузки PHP обновите раздел «Администрирование» > «Обзор». Предупреждение OPcache должно исчезнуть, как только веб-API будет использовать достаточные лимиты и необходимые настройки.

После перезапуска службы PHP обновите обзор администрирования Nextcloud. Если предупреждение исчезнет, ​​значит, конфигурация считывается правильным SAPI, и указанный порог больше не превышен.

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

Какой объем памяти OPcache следует выделить?

Единого оптимального значения не существует. Целесообразным является достаточный запас памяти, чтобы кэш не постоянно приближался к своим пределам, не лишая при этом остальную часть стека ресурсов. Для небольшого VPS начинайте с консервативного подхода и следите за нехваткой памяти. Для экземпляра с большим количеством приложений или большим объемом PHP-кода 256 МБ или более могут быть оправданы, если фактическое использование OPcache показывает, что 128 МБ недостаточно. На большом сервере размер памяти следует рассматривать в совокупности с количеством рабочих процессов PHP-FPM и другими общими сервисами.

Практическое сравнение простое: больший объем памяти OPcache может уменьшить количество операций вытеснения кэша и перекомпиляции, но меньший объем памяти OPcache оставляет больше оперативной памяти для одновременно работающих PHP-процессов и баз данных. Выбирайте, основываясь на измеренном использовании и предупреждениях Nextcloud, а не на максимальном количестве памяти, которое может принять ваш сервер.

Распространенные ошибки, из-за которых предупреждение сохраняется

  • Редактирование только PHP через командную строку: браузер по-прежнему использует PHP-FPM или mod_php.
  • Неправильное повышение лимита: увеличение объема памяти не решает проблему переполненной таблицы ускоренных файлов.
  • Если не учитывать перезапуск: в запущенном процессе PHP могут по-прежнему использоваться старые значения INI-файла.
  • Отключение opcache.save_comments: Nextcloud требует сохранения комментариев.
  • Копирование устаревших фрагментов кода для настройки параметров: старые руководства могут рекомендовать агрессивные настройки повторной проверки, которые могут привести к проблемам при обновлении.

Рекомендуемый подход в зависимости от типа сервера

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

На загруженном многопользовательском сервере: отслеживайте потребление OPcache и оставляйте больший запас памяти там, где предупреждение администратора указывает на перегрузку. Координируйте использование памяти OPcache с размерами рабочих процессов PHP-FPM, чтобы одна оптимизация не приводила к общесистемному подкачке.

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

Окончательная проверка

Правильное решение состоит из трех частей: в веб-процессе PHP Nextcloud включен OPcache, необходимые параметры поведения opcache.save_comments=1остаются неизменными, и конкретный ресурс OPcache, который был близок к заполнению, теперь имеет достаточный запас. Как только эти условия будут выполнены и PHP будет перезагружен, предупреждение должно исчезнуть без чрезмерного выделения памяти или рискованных изменений в проверке кэша.

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

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), а также устранить неполадки, связанные с отсутствием ответов, без избыточного сканирования.