Правильная настройка OPcache и PHP-FPM даёт 20–50% прирост производительности без изменений кода сайта. Разберём оптимальные параметры для продакшн-сервера с Битрикс.
Настройка OPcache
Откройте /etc/php/8.1/fpm/conf.d/10-opcache.ini:
[opcache]
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
; В продакшне — отключить проверку изменений файлов:
opcache.validate_timestamps=0
Важно: при validate_timestamps=0 сбрасывайте OPcache после каждого деплоя:
php -r "opcache_reset();"
Настройка PHP-FPM под нагрузку
[www]
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
Формула для pm.max_children: доступная RAM / средний размер процесса PHP. Размер процесса проверьте:
ps aux | grep php-fpm | awk '{print $6}' | sort -n | tail -5
Мониторинг OPcache
$status = opcache_get_status();
echo round($status['memory_usage']['used_memory'] / 1024 / 1024) . ' MB использовано';
echo round($status['opcache_statistics']['opcache_hit_rate'], 2) . '% hit rate';
Хороший показатель — hit rate выше 98%.
Realpath cache
realpath_cache_size = 4096k
realpath_cache_ttl = 600
PHP Preloading (PHP 8+)
opcache.preload=/var/www/site/bitrix/modules/main/lib/loader.php
opcache.preload_user=www-data
Предзагрузка классов Битрикс ускоряет обработку первых запросов после рестарта PHP-FPM.
