PHP-FPM конфиг для мощных серверов 32 GB RAM: NUMA-тюнинг и пулы
Конфигурация PHP-FPM для серверов с 32 GB RAM: 300+ процессов, выделенные сокеты, защита от троттлинга ядра и высокая пропускная способность.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/php/8.3/fpm/pool.d/www.conf
# /etc/php/8.3/fpm/pool.d/www.conf
; Enterprise PHP-FPM пул под 32 GB RAM
[www]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
listen.backlog = 8192
pm = static
; Расчет: (32768MB - 10000MB DB/OS/Redis) / 65MB = ~350 воркеров
pm.max_children = 350
pm.max_requests = 5000
pm.status_path = /fpm-status
request_slowlog_timeout = 2s
slowlog = /var/log/php-fpm-slow.log
request_terminate_timeout = 180s
php_admin_value[memory_limit] = 512M
php_admin_value[max_execution_time] = 90
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
pm.max_children = 350 |
350 воркеров | Обеспечивает обработку сверхвысоких пиковых нагрузок в период рекламных кампаний и распродаж. |
pm.max_requests |
500 - 1000 | Периодически перезапускает PHP-воркеры после обработки N запросов, предотвращая утечки оперативной памяти (Memory Leak). |
request_terminate_timeout |
180s | Принудительно убивает зависшие PHP-скрипты, защищая пул от полного исчерпания свободных процессов при тяжелых SQL-запросах. |
innodb_flush_log_at_trx_commit |
2 | Сбрасывает транзакции MySQL на диск раз в секунду вместо каждого коммита, увеличивая скорость записи в БД в 3-5 раз. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 16 vCPU, 32 GB RAM, 300 GB NVMe
Расчетная нагрузка: Крупный ритейл / Маркетплейс от 200 000 хостов/сутки
16 CPU / 32 GB NVMe
Timeweb Cloud
Рекомендуемые ресурсы
16 vCPU /
32 GB RAM /
300 GB NVMe Enterprise
16 vCPU / 32 GB RAM
Selectel
Рекомендуемые ресурсы
16 vCPU /
32 GB RAM /
300 GB NVMe Enterprise
Turbo 32 GB
Beget
Рекомендуемые ресурсы
16 vCPU /
32 GB RAM /
300 GB NVMe Enterprise
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Нужно ли настраивать лимиты ядра Linux при 350 воркерах?
Да, в `/etc/security/limits.conf` и `/etc/sysctl.conf` увеличьте `fs.file-max = 2097152` и `net.core.somaxconn = 65535`.
Как понять, что пулу PHP-FPM не хватает памяти?
В логе `/var/log/php-fpm.log` появляется предупреждение `server reached pm.max_children setting, consider raising pm.max_children`. Также команда `dmesg | grep oom` покажет OOM-киллер.
Нужно ли перезагружать службу после изменения параметров?
Да, для применения настроек выполните: `systemctl restart php8.2-fpm` (или вашу версию PHP) и `systemctl restart mysql`.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.