Устраните предупреждение Nextcloud OPcache, отрегулировав правильный лимит.

Чтобы устранить предупреждение Nextcloud «Неправильно настроен PHP OPcache», откройте полное предупреждение в разделе «Администрирование» → «Обзор», затем увеличьте только указанное в нем ограничение OPcache в конфигурации PHP, используемой веб-сервером. Перезапустите соответствующую службу PHP и снова проверьте предупреждение; изменение только конфигурации PHP в командной строке может не изменить то, что использует Nextcloud.

Например, если Nextcloud сообщает, что буфер интернированных строк почти заполнен, увеличение его размера opcache.interned_strings_bufferс 16 до 32 МБ является разумной первой корректировкой, если у сервера достаточно оперативной памяти. Другое предупреждение, касающееся кэшированных скриптов или разделяемой памяти, требует другой настройки.

Почему Nextcloud отображает это предупреждение OPcache?

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

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

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

1. Определите ситуацию, требующую внимания.

Войдите в систему как администратор, перейдите в раздел «Настройки администрирования» → «Обзор» и прочтите полное предупреждение OPcache. Запишите точную директиву, если она указана. Не следует предполагать, что каждое предупреждение OPcache означает недостаточный размер буфера интернированных строк.

  • Буфер интернированных строк почти заполнен: проверьте opcache.interned_strings_buffer.
  • Разделяемая память OPcache почти заполнена: проверьте opcache.memory_consumption.
  • Количество кэшированных скриптов или ключей приближается к пределу: проверьте opcache.max_accelerated_files.
  • OPcache отключен или комментарии не сохраняются: проверьте opcache.enableи opcache.save_comments.

2. Найдите конфигурацию PHP, обслуживающую Nextcloud.

На серверах Debian или Ubuntu, использующих PHP-FPM, конфигурация PHP обычно организуется по версии PHP и API сервера. Например, PHP 8.3 FPM может читать файлы в каталоге `/etc/php` /etc/php/8.3/fpm/conf.d/, в то время как модуль PHP Apache может использовать `/ etc/php` /etc/php/8.3/apache2/conf.d/.

Чтобы узнать, какие службы PHP-FPM доступны на хосте с systemd, выполните следующую команду:

systemctl list-units --type=service 'php*-fpm.service'

Проверьте соответствующие файлы OPcache, заменив установленную вами версию PHP:

sudo ls -l /etc/php/8.3/fpm/conf.d/*opcache*
sudo grep -R 'opcache\.' /etc/php/8.3/fpm/conf.d/

Если файлы не найдены, проверьте основные php.iniи пакетные соглашения вашего дистрибутива. Эта команда php --iniполезна для определения конфигурации PHP в командной строке , но CLI и PHP-FPM могут загружать разные настройки.

Для Docker или Nextcloud All-in-One проверьте конфигурацию PHP внутри контейнера Nextcloud и используйте поддерживаемый метод постоянной конфигурации. Редактирование /etc/phpфайлов hosts обычно не приводит к настройке PHP внутри контейнера; редактирование сгенерированного файла контейнера также может быть отменено при повторном создании.

3. Увеличьте сообщаемый лимит, не изменяя несвязанные настройки.

Перед внесением изменений обязательно сделайте резервную копию соответствующего конфигурационного файла. В стандартной установке PHP-FPM в Debian/Ubuntu одним из поддерживаемых подходов является добавление локального переопределения в conf.dкаталог FPM соответствующей версии PHP. Перед продолжением убедитесь, что этот каталог действительно загружен вашей установкой PHP-FPM.

В примере с буфером интернированных строк создайте или отредактируйте локальное переопределение, например /etc/php/8.3/fpm/conf.d/99-nextcloud-opcache.ini:

; Example for a warning about interned strings
opcache.interned_strings_buffer=32

Здесь 32имеется в виду 32 МБ, а не 32 байта. Итоговое значение должно соответствовать фактическому использованию и доступному объему оперативной памяти.

Если в предупреждении указан другой предел, используйте соответствующий пример вместо того, чтобы слепо складывать все три:

; Example only: larger shared bytecode cache
opcache.memory_consumption=256

; Example only: allow more cached script keys
opcache.max_accelerated_files=20000

Значения opcache.memory_consumptionуказываются в мегабайтах, тогда как opcache.max_accelerated_filesзадает ограничение на количество ключей скрипта. В официальном справочнике по конфигурации PHP OPcache объясняется их единица измерения, значения по умолчанию и возможность изменения.

Если предупреждение указывает на отключенный OPcache или отсутствие комментариев, а не на нехватку памяти, проверьте вместо этого следующие настройки:

opcache.enable=1
opcache.save_comments=1

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

4. Примените новую конфигурацию.

Для примера сервера, работающего под управлением PHP 8.3 через PHP-FPM, сначала проверьте конфигурацию службы, а затем перезапустите соответствующую службу во время короткого периода технического обслуживания:

sudo php-fpm8.3 -t
sudo systemctl restart php8.3-fpm

Замените 8.3на установленную версию PHP-FPM и подтвердите имя исполняемого файла и службы перед выполнением любой из команд. Перезапуск прерывает обработку запросов этим пулом. В Apache с mod_phpсоответствующим сервисом будет Apache, а не PHP-FPM; для контейнеров примените описанную в вашем развертывании процедуру перезапуска или создания, сохранив при этом конфигурацию.

Если перезапуск службы не удаётся, восстановите резервную копию конфигурации и проверьте журнал ошибок PHP-FPM или веб-сервера.

5. Если предупреждение не исчезло, проверьте действующие настройки PHP для веб-приложения.

После перезапуска PHP-процессов сначала перезагрузите раздел «Администрирование» → «Обзор». Если предупреждение сохраняется, убедитесь, что измененная директива действительно загружается средой выполнения PHP для веб -приложений , а не только CLI. Проверьте наличие .iniфайла, загружаемого позже, или переопределения пула PHP-FPM, которое заменяет ваше значение.

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

Для получения постоянного оповещения о размере кэша, проверяйте фактическое использование OPcache при нормальной нагрузке, а не многократное удвоение значений. В документации PHPopcache_get_status() описана статистика использования памяти, интернированных строк и кэшированных скриптов, доступная запущенному процессу PHP.

В официальных образах Docker и развертываниях All-in-One Nextcloud используются собственные настройки PHP по умолчанию; не следует предполагать, что изменения на уровне хоста или рекомендуемые значения из другой установки сохранятся. Для получения информации о модели конфигурации, соответствующей вашему развертыванию, обратитесь к официальному репозиторию Docker Nextcloud или официальному репозиторию All-in-One .

Убедитесь, что исправление сработало.

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

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

Снизьте скачки загрузки ЦП в предварительной версии Nextcloud с помощью запланированной очереди.

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

Переход от «обработки файлов» к синхронизации Nextcloud Desktop Sync

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

Устраните предупреждение Nextcloud OPcache, отрегулировав правильный лимит.

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

Подключение Nextcloud к CODE Docker: настройка и компромиссы.

Подключение Nextcloud к CODE Docker: настройка и компромиссы.

Сравните встроенный и основанный на Docker код, затем подключите Collabora Online к Nextcloud через защищенный обратный прокси-сервер HTTPS.

Создайте отказоустойчивый кластер Nextcloud с помощью Galera.

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

Проводите звонки Nextcloud Talk, если прямая передача медиаданных не работает.

Проводите звонки Nextcloud Talk, если прямая передача медиаданных не работает.

Настройте и проверьте доступность TURN-ретранслятора для Nextcloud Talk, если брандмауэры или ограничительные NAT блокируют прямые вызовы.

Устраните предупреждения о целостности Nextcloud, восстановив правильные файлы.

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

Подключите Gmail или Microsoft 365 к Nextcloud Mail с помощью OAuth2.

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

Безопасно выведите из зависшего режима обслуживания Nextcloud с помощью OCC.

Безопасно выведите из зависшего режима обслуживания Nextcloud с помощью OCC.

Используйте OCC для восстановления доступа к Nextcloud, проверки статуса миграции базы данных и выбора правильной команды для установки архивов, Docker или Snap.

Настройка входа в Nextcloud через LDAP и Active Directory.

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