PHP-FPM та Nginx tuning: практичний чекліст
Зміст
Стаття
Правильне налаштування Nginx і PHP-FPM — основа продуктивного e-commerce сервера. Ось практичний чекліст на основі реального досвіду з production серверами.
PHP-FPM: вибір PM mode
Для VPS з фіксованою RAM використовуйте pm = static або ondemand. Static дає передбачуване споживання ресурсів, ondemand — економить RAM в тихий час.
pm = ondemand pm.max_children = 20 pm.process_idle_timeout = 10s
OPcache конфігурація
Критично важливі параметри для production:
opcache.memory_consumption=256 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=10000 opcache.validate_timestamps=0
Nginx Worker Connections
Правило: worker_processes = кількість CPU ядер, worker_connections = 1024-4096 залежно від RAM. Увімкніть multi_accept on і use epoll.
FastCGI Cache
Налаштуйте FastCGI cache з розумними виключеннями (кошик, авторизовані користувачі, POST запити). Це найефективніший спосіб прискорити статичні сторінки.
Keepalive та Gzip
Увімкніть keepalive_timeout 65, gzip для text/html/css/js, і HTTP/2 для всіх HTTPS сайтів. Це суттєво знижує кількість TCP з'єднань.
Що робити далі
Найважливіше застереження до будь-яких конфігурацій із інтернету, включно з цією: значення залежать від вашого обсягу пам'яті й профілю навантаження. Кількість воркерів, розрахована для сервера з 8 ГБ, на сервері з 2 ГБ призведе до падінь через нестачу пам'яті.
Тому перед зміною конфігурації варто виміряти, скільки пам'яті реально споживає один воркер на вашому сайті — на важкому магазині це може бути втричі більше за типове значення.
Повний порядок діагностики описаний у матеріалі чому сервер повільний. Практична робота — налаштування Nginx і PHP-FPM та оптимізація продуктивності сервера з вимірюванням до і після.