Wordpress - opcache - 2026

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2026
Перейти к:навигация, поиск

Published: 2026-09-26


Если у вас VDS или выделенный сервер и на нём много сайтов на WordPress, первое, что стоит проверить, — состояние OPcache. Кэш опкодов PHP на таких серверах заполняется быстро: десятки сайтов, админки, плагины и темы дают тысячи уникальных скриптов, и стандартных 128 МБ под них часто не хватает.

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

Обзор

Схема простая: смотрим график, если он красный больше чем на 50 % — увеличиваем параметры в 2 раза. Отдельно важно, чтобы на сервере было минимум 50 % свободной RAM, иначе расширять кэш нельзя.

Ключевые параметры OPcache
Параметр По умолчанию Где смотреть
opcache.memory_consumption 128 МБ график потребления памяти
opcache.interned_strings_buffer 8 МБ таблица buffer_size и строка free_memory
opcache.max_accelerated_files 10000 число в скобках в названии вкладки Scripts
  • загрузить диагностический файл в корень любого сайта и открыть его в браузере;
  • если график сразу красный больше чем на 50 % — увеличивать параметры;
  • если график нормальный — походить по сайту, зайти в админку, открыть побольше страниц;
  • настройка делается только при 50 % свободной RAM, все параметры — ×2;
  • после правки обязательно перезагрузить Apache или PHP-FPM.

Что такое OPcache

OPcache — встроенный в PHP кэш, который хранит уже разобранный (скомпилированный) код скриптов в разделяемой памяти. Без него при каждом HTTP-запросе PHP заново читает файлы и разбирает их, а с ним — отдаёт готовый результат из памяти.

Практический смысл в трёх пунктах:

  • каждое уникальное имя скрипта — одна запись в кэше, отсюда ограничение max_accelerated_files;
  • расход памяти виден на графике и складывается из двух частей: опкоды и интернированные строки (повторяющиеся имена функций, переменных и классов);
  • при нехватке памяти новые скрипты перестают помещаться, часть кэша вытесняется, и выигрыш в скорости теряется.

Именно поэтому на нагруженных WordPress-сайтах параметры OPcache приходится поднимать вручную: по умолчанию расчёт сделан на скромный объём PHP-кода, а не на десятки сайтов на одном сервере.

Как проверить состояние OPcache

Порядок проверки простой и занимает пару минут.

  1. Загрузите файл с графиком в корень любого из сайтов.
  2. Вызовите его через браузер.
  3. Если график сразу красный больше чем на 50 % — параметры надо увеличивать.
  4. Если график нормальный — походите по сайту, зайдите в админку, откройте побольше страниц и смотрите снова.

⛔ Предупреждение
Свежий запуск почти всегда показывает зелёный график. Реальный расход виден только после нагрузки — обхода сайта, входа в админку и открытия множества страниц.

Почему важно проверять именно на нагрузке: кэш наполняется по мере выполнения скриптов, а не при старте сервера. Пустой или почти пустой график после перезапуска ещё ничего не говорит о запасе.

Параметры, которые увеличивают

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

Параметр Стандарт Что означает и когда увеличивать
opcache.memory_consumption 128 МБ именно этот объём отображается на графике. Красный график выше 50 % — повод удваивать
opcache.interned_strings_buffer 8 МБ в таблице buffer_size и ниже строка free_memory. Если free_memory уже измеряется в килобайтах, буфер увеличивают
opcache.max_accelerated_files 10000 сколько скриптов используется сейчас, написано в скобках в названии вкладки Scripts, например 3974. Растёт вместе с памятью: больше памяти — больше скриптов кэшируется

ℹ️ Информация
Реальный размер хеш-таблицы OPcache не берётся из значения как есть, а округляется вверх до одного из фиксированных значений — 223, 463, 983, 1979, 3907, 7963, 16229, 32531 и далее. Поэтому в скобках у вкладки Scripts может стоять не 10000, а, например, 16229.

Настройка PHP

Настройку делают только при 50 % свободной RAM на сервере. OPcache живёт в разделяемой памяти, и вся выделенная под него память вычитается из физической RAM, поэтому на сервере без запаса расширять кэш нельзя.

Правило простое: все параметры ×2 от стандартных.

opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000

Ключевое условие: с увеличением памяти больше скриптов будет помещаться в кэш, поэтому параметр max_accelerated_files имеет смысл поднимать одновременно с memory_consumption, а не отдельно.

Перезагрузка Apache и PHP-FPM

После правки php.ini обязательно нужно перезагрузить Apache или PHP-FPM. Без перезагрузки процессы продолжают работать со старой конфигурацией, и в phpinfo будут видны прежние значения — создаётся впечатление, что настройка не применилась.

# Apache
systemctl reload apache2
systemctl restart apache2

# PHP-FPM (подставьте версию PHP, например 8.3)
systemctl restart php8.3-fpm

Сравнение

Вариант Что меняется Когда применять
Стандартные значения 128 МБ, 8 МБ, 10000 файлов небольшое число сайтов, график не упирается в красную зону
Удвоение, ×2 256 МБ, 16 МБ, 20000 файлов VDS или выделенный сервер с множеством сайтов на WordPress и более 50 % свободной RAM
Без изменений параметры остаются стандартными свободной RAM меньше 50 %: расширять кэш нельзя, сначала нужно решить вопрос с памятью сервера

FAQ

Почему нельзя просто увеличить память OPcache на любом сервере? Потому что память под OPcache берётся из разделяемой памяти и фактически из физической RAM сервера. Условие простое: минимум 50 % свободной RAM, иначе расширять кэш нельзя.

Что означает число в скобках в названии вкладки Scripts? Это количество скриптов, которые используются сейчас. Например, 3974 скрипта при стандартном лимите 10000. С ростом памяти это число тоже вырастет, поэтому лимит файлов стоит поднимать вместе с объёмом памяти.

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

Что делать, если free_memory в таблице buffer_size уже в килобайтах? Увеличивать opcache.interned_strings_buffer, так как запас интернированных строк фактически исчерпан. Как правило, этот параметр поднимают вместе с memory_consumption.

Нужно ли перезапускать сервер после правки php.ini? Да, обязательно Apache или PHP-FPM. Без перезагрузки процессы работают со старой конфигурацией, и изменения не видны.

Итог

Проверка OPcache занимает несколько минут: загрузить диагностический файл в корень сайта, открыть его в браузере и посмотреть график — сразу и после нагрузки. Если график красный больше чем на 50 %, а на сервере есть минимум 50 % свободной RAM, удваивайте memory_consumption, interned_strings_buffer и max_accelerated_files, перезагружайте Apache или PHP-FPM и проверяйте снова. Повторяйте цикл до тех пор, пока все показатели не будут с запасом хотя бы на 50 %.

Источники

×
Реклама
← В главную
ИКС 88x31 - Visitor counter