Краткий ответ: Запускайте PHP 8.3 с включённым OPcache, размерьте FPM-пул от вашей RAM (pm.max_children ≈ доступная RAM ÷ ~60–80 MB на воркер), поставьте memory_limit = 256M и поднимите лимиты загрузки до практичных значений (64M). Размер PHP-FPM — это разница между стабильным сайтом и 502-ми под нагрузкой.
Обзор
Каждый незакешированный запрос WordPress — это запрос PHP, поэтому конфигурация PHP прямо задаёт потолок вашей пропускной способности. Доминируют два рычага: OPcache (убирает стоимость перекомпиляции — почти бесплатная скорость) и менеджер процессов FPM (сколько запросов вы обслужите параллельно до появления очереди).
Что нужно иметь
- Знание аппетита воркера: подгоните трафик и проверьте
ps --no-headers -o rss -C php-fpm8.3 | awk '{sum+=$1; n++} END {print sum/n/1024 " MB avg"}' - Знание свободной RAM после MariaDB/Redis/веб-сервера:
free -h.
Пошаговая инструкция
- Отредактируйте пул (
/etc/php/8.3/fpm/pool.d/www.conf) — пример для ~2 GB свободной RAM и воркеров по ~70 MB:pm = dynamic pm.max_children = 25 pm.start_servers = 5 pm.min_spare_servers = 3 pm.max_spare_servers = 8 pm.max_requests = 500 - Подкрутите
/etc/php/8.3/fpm/php.ini:memory_limit = 256M upload_max_filesize = 64M post_max_size = 64M max_execution_time = 120 - Проверьте OPcache и дайте ему пространство (php.ini, обычно уже включено):
opcache.enable=1 opcache.memory_consumption=192 opcache.max_accelerated_files=20000 opcache.validate_timestamps=1 - Примените и проверьте:
sudo systemctl reload php8.3-fpm, затем следите за предупреждениями «server reached pm.max_children» в/var/log/php8.3-fpm.log— это сообщение означает, что пул маловат (или запросы слишком медленные).
Типичные проблемы
- 502/504 под нагрузкой: пул исчерпан — поднимайте
pm.max_childrenтолько если позволяет RAM, иначе удешевляйте запросы (кеширование) или добавляйте RAM. - max_children от RAM, которой нет: воркеры × аппетит должны умещаться в свободную RAM, иначе OOM killer первой убьёт MariaDB.
- Путаница с memory_limit: это лимит на запрос, а не суммарный — 256M не значит, что каждый запрос ест 256 MB.
Когда обращаться в поддержку
Если оттюненный FPM + кеширование всё равно упираются в потолок — нагрузка переросла план: откройте тикет, чтобы обсудить апгрейд на больше vCPU/RAM (Power VPS для CPU-тяжёлых динамических сайтов).
Частые вопросы
Как посчитать pm.max_children для PHP-FPM?
Разделите RAM, которую можете отдать PHP, на средний аппетит одного воркера (для WordPress обычно 60–80 MB): 2 GB свободных / 70 MB — это примерно 25–28 воркеров, и оставьте запас для базы данных.
Действительно ли обновление версии PHP ускоряет WordPress?
Да — PHP 8.x в бенчмарках на WordPress заметно быстрее 7.4 и получает security-патчи; протестируйте плагины на staging, а затем обновляйтесь через PPA ondrej или свою панель.
Что делает pm.max_requests?
Он перезапускает каждый FPM-воркер после N запросов (например, 500), что маскирует медленные утечки памяти в плагинах и не даёт долгоживущим пулам распухать днями.
Похожие статьи
- Как ускорить WordPress на VPS
- Как оптимизировать MariaDB для WordPress
- Как починить ошибку 500 в WordPress
- Как установить PHP
Готовы начать? Заказать WordPress VPS в Cloud2Y →
