82 votes

php5-fpm : le serveur a atteint pm.max_children

J'ai Nginx + php5-fpm . Plusieurs fois par heure, mon site web se bloque et dans le fichier journal, je vois ce qui suit :

WARNING : [pool www] server reached pm.max_children setting (5), envisagez de l'augmenter.

/etc/php5/fpm/pool.d/www.conf contient la configuration suivante :

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Serveur : AMD Opteron™ 3280, Octo-Core, 8x 2.4 GHz, 16 GB DIMM (DDR3).

Je n'ai aucune idée des chiffres que je dois mettre dans le fichier www.conf pour ce serveur. Puis-je aider quelqu'un ? Merci

72voto

replay Points 3140

Il y a de nombreuses raisons possibles pour lesquelles votre PHP-FPM atteindrait l'adresse de l'utilisateur. max_children . Les plus courants sont :

  • Un grand nombre de demandes parallèles de la part de vos clients
  • Exécution lente des scripts PHP
  • Réglage très bas de la max_children

En regardant les spécifications de votre machine, et en supposant qu'il n'y a rien d'autre que PHP+Nginx en cours d'exécution, je pense que vous pourriez le mettre beaucoup plus haut que 5. Vous dites que vous avez 8 cœurs, généralement Nginx a besoin de beaucoup moins de CPU que PHP, donc avec 5 enfants vous ne serez probablement jamais en mesure de les utiliser tous. Je le règle habituellement sur quelque chose comme le nombre de cœurs x 2 ou nombre de cœurs x 4 en fonction de la consommation de mémoire de vos scripts PHP.

38voto

Tom Jowitt Points 413

J'ai découvert qu'en définissant la valeur pm.max_requests (qui est commentée par défaut), cela a permis de corriger ces erreurs. Ce paramètre force les requêtes enfant à se relancer après l'exécution d'un certain nombre de requêtes et peut être utile s'il y a des fuites de mémoire quelque part dans votre code ou dans des librairies tierces.

Sur /etc/php-fpm.d/www.conf :

pm.max_requests = 500

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X