Найти в Дзене
WebHOST1.ru

OPcache на VPS: как ускорить PHP-сайт и снизить нагрузку на сервер

Ваш PHP-сайт открывается медленно, а сервер задыхается под нагрузкой. В большинстве случаев это следствие того, что интерпретатор при каждом запросе заново компилирует одни и те же скрипты. Решение — включить и грамотно настроить OPcache на VPS, чтобы страницы отрисовывались быстрее, а система работала стабильнее даже при пиковом трафике. Без OPcache PHP компилирует код при каждом обращении, даже если файлы не менялись неделями. Включение кеширования опкода позволяет один раз перевести скрипты в байт-код и хранить его в памяти. Далее PHP просто берёт готовый результат, минуя повторную компиляцию. Это сокращает время ответа и снижает нагрузку на CPU и диск. Ниже — как проверить статус OPcache, включить расширение и подобрать рабочие параметры. OPcache кеширует не HTML-страницы, а результат компиляции PHP-кода. Он не заменяет кеширование страниц и объектное кеширование в CMS, а работает вместе с ними, усиливая общий эффект оптимизации. Быстрее всего посмотреть статус через phpinfo(). Соз
Оглавление

Ваш PHP-сайт открывается медленно, а сервер задыхается под нагрузкой. В большинстве случаев это следствие того, что интерпретатор при каждом запросе заново компилирует одни и те же скрипты. Решение — включить и грамотно настроить OPcache на VPS, чтобы страницы отрисовывались быстрее, а система работала стабильнее даже при пиковом трафике.

Введение

Без OPcache PHP компилирует код при каждом обращении, даже если файлы не менялись неделями. Включение кеширования опкода позволяет один раз перевести скрипты в байт-код и хранить его в памяти. Далее PHP просто берёт готовый результат, минуя повторную компиляцию. Это сокращает время ответа и снижает нагрузку на CPU и диск. Ниже — как проверить статус OPcache, включить расширение и подобрать рабочие параметры.

Что делает OPcache

OPcache кеширует не HTML-страницы, а результат компиляции PHP-кода. Он не заменяет кеширование страниц и объектное кеширование в CMS, а работает вместе с ними, усиливая общий эффект оптимизации.

Как проверить и включить OPcache

Быстрее всего посмотреть статус через phpinfo(). Создайте файл с содержимым:

<?php phpinfo();

Откройте его в браузере и найдите раздел OPcache. Если видите opcache.enable = On, расширение активно.

Либо проверьте модуль командой:

php -m | grep -i opcache

Если OPcache не установлен, на Debian/Ubuntu используйте:

sudo apt install php-opcache

для конкретной версии — например:

sudo apt install php8.1-opcache

На RHEL/CentOS/AlmaLinux подойдёт:

sudo dnf install php-opcache

или, при старом менеджере пакетов:

sudo yum install php-opcache

Далее найдите рабочий php.ini:

php --ini

Убедитесь, что подключено расширение и задано базовое включение:

zend_extension=opcache.so
opcache.enable=1

(В дистрибутивах нередко есть отдельный файл opcache.ini в каталоге conf.d; допускается настраивать параметры там.)

Перезапустите обработчик PHP.

Для Apache с libphp:

sudo systemctl restart apache2

Для связки Nginx + PHP-FPM:

sudo systemctl restart php-fpm

(или конкретную службу вида php8.1-fpm).

Рекомендуемые параметры

Подберите объёмы и интервалы под проект, затем перезапустите PHP-сервис.

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=1

opcache.memory_consumption определяет память под кеш.

Небольшим сайтам достаточно 64 МБ, средним комфортно 128 МБ, крупным проектам — 256 МБ и выше, чтобы избежать вытеснения кеша. interned_strings_buffer обычно достаточно оставить на 8 МБ. max_accelerated_files — верхний предел количества файлов в кеше: для WordPress на практике хорошо работают значения 8000–10000, для очень больших установок — до 20000.

revalidate_freq задаёт периодичность проверки изменений; в продакшене разумно 30–60 секунд.

validate_timestamps=1 позволяет автоматически подхватывать новые версии файлов; при 0 скорость чуть выше, но потребуется вручную очищать кеш после каждого обновления кода.

Тонкая настройка

Если вы часто обновляете плагины или ядро CMS, после релизов имеет смысл принудительно сбрасывать кеш — достаточно перезапуска PHP-FPM или Apache. В период разработки уменьшайте revalidate_freq до 1–2 секунд, а в продакшене возвращайте безопасный интервал, чтобы не тратить лишние ресурсы на постоянные проверки. Периодически смотрите заполнение кеша через phpinfo(); при близких к 100% значениях увеличивайте memory_consumption и при необходимости max_accelerated_files, иначе OPcache начнёт вытеснять записи и компилировать скрипты заново.

Совместное использование с другими техниками

Максимальный эффект достигается в связке: OPcache ускоряет исполнение PHP-кода, объектный кеш (Redis/Memcached) разгружает базу данных, кеш страниц в CMS снижает количество динамических генераций. Эти уровни дополняют друг друга и вместе дают заметный прирост скорости и стабильности.

Итог

OPcache — быстрый и бесплатный способ увеличить производительность PHP-сайта. Настраивается один раз, а экономит ресурсы постоянно: снижается TTFB, падает нагрузка на CPU, растёт пропускная способность сервера. Если OPcache ещё не активен на вашем VPS, включите его и измерьте реальные метрики до и после — разница будет очевидна. Нужна помощь с подбором параметров под ваш трафик и стек? Инженеры Webhost1 настроят OPcache, PHP-FPM и сопутствующее кеширование так, чтобы проект работал быстро и предсказуемо под нагрузкой.