Tuning du pool PHP-FPM en production — la décision static vs dynamic vs ondemand
12 mai 2026 · 1 min de lecture · par Sudhanshu K.
Le problème de performance PHP le plus courant sur les audits entrants : PHP-FPM en mode dynamic avec un dimensionnement par défaut adapté à un VPS de 1 Go en 2014, tournant sur une machine de 16 Go, pendant que l'application meurt de faim à 5 enfants. L'autre courant : pm = ondemand sur un site prod à fort RPS qui paie le coût de fork à chaque burst.
Voici le tuning de pool que nous appliquons à l'onboarding, la discipline slowlog que nous imposons ensuite, et comment savoir si ça marche.
Le pool que nous livrons généralement
; /etc/php/8.3/fpm/pool.d/www.conf
pm = static
pm.max_children = 50
pm.max_requests = 1000
request_terminate_timeout = 60s
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/slow.log
pm.status_path = /fpm-status
ping.path = /fpm-pingstatic une fois que vous connaissez le bon max_children — pas de coût de fork sur les bursts, mémoire prévisible. Calculez max_children comme (RAM disponible - overhead OS - autres services) / mémoire par processus. Mesurez la mémoire par processus sous charge, pas au repos.
L'article complet couvre :
- Les modes pm — static vs dynamic vs ondemand, et quand chacun est correct
- Calculer
pm.max_childrenà partir de la mémoire par processus observée sous charge pm.max_requestset pourquoi le mettre à 0 (défaut) est faux- Tuning du slowlog — le seuil de 5 secondes et les patterns qu'il fait remonter
- Le wiring
/fpm-statuscôté Nginx et ce que chaque métrique signifie - Coordonner le tuning PHP-FPM avec la config OPcache + JIT sur le même hôte
Nous livrons cette configuration sur chaque stack PHP managée.
Article complet disponible
Lire l'article complet