PHP-FPM пул www.conf для VDS 2 GB RAM: расчет под WordPress и OpenCart
Готовый конфиг пула PHP-FPM для сервера с 2 GB RAM: динамический режим pm = dynamic, балансировка между MySQL и PHP, директивы Opcache.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/php/8.2/fpm/pool.d/www.conf
# /etc/php/8.2/fpm/pool.d/www.conf
; PHP-FPM пул для VDS 2 GB RAM (Dynamic режим)
[www]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
; Режим dynamic обеспечивает мгновенный отклик без задержек старта
pm = dynamic
; Расчет: (2048MB - 600MB OS/MariaDB) / 45MB = ~32 воркера
pm.max_children = 32
pm.start_servers = 6
pm.min_spare_servers = 4
pm.max_spare_servers = 10
pm.max_requests = 1000
pm.status_path = /status
ping.path = /ping
request_slowlog_timeout = 5s
slowlog = /var/log/php8.2-fpm-slow.log
php_admin_value[memory_limit] = 256M
php_admin_value[max_execution_time] = 60
php_admin_value[upload_max_filesize] = 64M
php_admin_value[post_max_size] = 64M
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
pm.max_children = 32 |
32 процесса | Позволяет параллельно обрабатывать до 32 тяжелых PHP-запросов генерации каталога или корзины без свопинга. |
pm.start_servers = 6 |
6 процессов | Готовые предварительно запущенные воркеры в памяти, гарантирующие TTFB ответа менее 50 мс. |
pm.max_requests |
500 - 1000 | Периодически перезапускает PHP-воркеры после обработки N запросов, предотвращая утечки оперативной памяти (Memory Leak). |
request_terminate_timeout |
180s | Принудительно убивает зависшие PHP-скрипты, защищая пул от полного исчерпания свободных процессов при тяжелых SQL-запросах. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 2 vCPU, 2 GB RAM, 40 GB NVMe SSD
Расчетная нагрузка: до 5 000 посетителей/сутки
2 CPU / 2 GB NVMe
Timeweb Cloud
Рекомендуемые ресурсы
2 vCPU /
2 GB RAM /
40 GB NVMe
2 vCPU / 2 GB RAM
Selectel
Рекомендуемые ресурсы
2 vCPU /
2 GB RAM /
40 GB NVMe
Turbo 2 GB
Beget
Рекомендуемые ресурсы
2 vCPU /
2 GB RAM /
40 GB NVMe
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Как узнать реальный средний размер одного PHP процесса?
Выполните в терминале команду: `ps --no-headers -o rss -C php-fpm8.2 | awk '{ sum+=$1; cnt++ } END { if (cnt>0) printf("%.2f MB\n", sum/cnt/1024) }'`.
Как понять, что пулу 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`.
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.