Без рубрики

Настройка OPcache и PHP-FPM для 1С-Битрикс: +50% производительности без изменений кода

Правильная настройка 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.