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

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

Устранение проблемы высокой загрузки ЦП в Jitsi Meet в браузерах клиентов.

Устранение проблемы высокой загрузки ЦП в Jitsi Meet в браузерах клиентов.

Диагностика скачков загрузки ЦП в браузере Jitsi Meet и снижение нагрузки на клиентское приложение путем проверки видеофайлов, эффектов камеры, графики браузера и настроек хоста.

Как отслеживать метрики Jitsi Videobridge с помощью Prometheus и Grafana

Как отслеживать метрики Jitsi Videobridge с помощью Prometheus и Grafana

Отслеживайте состояние Jitsi Videobridge, загрузку конференций и трафик с помощью встроенной точки доступа Prometheus, а затем анализируйте и отображайте данные в виде графиков в Grafana.

Как настроить пользовательское доменное имя для Jitsi Meet Docker

Как настроить пользовательское доменное имя для Jitsi Meet Docker

Настройте собственный домен для Jitsi Meet Docker с указанием DNS, PUBLIC_URL, HTTPS, Let's Encrypt, портов брандмауэра, настроек NAT и сквозной проверки.

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 Not Found After SSL Renewal

Fix Zimbra Admin Console 404 errors after SSL renewal by checking the correct URL and port, proxy routing, service status, deployed certificates, and logs.

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

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

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

Исправление ошибок миграции базы данных Kopano после обновления версии MySQL.

Исправление ошибок миграции базы данных Kopano после обновления версии MySQL.

Для устранения неполадок, возникающих при миграции базы данных Kopano после обновления MySQL или MariaDB, проверьте резервные копии, версии серверов, режимы SQL, кодировку, состояние схемы и журналы.

Как настроить аутентификацию LDAP и Active Directory в Nextcloud

Как настроить аутентификацию LDAP и Active Directory в Nextcloud

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

Как исправить уведомления Element Android без сервисов Google: руководство по UnifiedPush

Как исправить уведомления Element Android без сервисов Google: руководство по UnifiedPush

Исправление проблем с уведомлениями Element Android на телефонах без привязки к Google путем настройки UnifiedPush, разрешений Android, параметров батареи и надежных тестов проверки.

Исправлено предупреждение Nextcloud «В базе данных отсутствуют некоторые индексы».

Исправлено предупреждение Nextcloud «В базе данных отсутствуют некоторые индексы».

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

Как настроить единый вход (SSO) с помощью Keycloak в Element Web

Как настроить единый вход (SSO) с помощью Keycloak в Element Web

Настройте единый вход Keycloak для Element Web, подключив OIDC к Synapse, задав точный URL-адрес обратного вызова, сопоставив данные пользователя и протестировав выход из системы.