Forum Linux.debian/ubuntu Nginx/PHP-FPM affole le system load (coeurs à 100%)

Posté par  . Licence CC By‑SA.
Étiquettes :
3
4
oct.
2021

Hello !

Je plante le décor :
- serveur dédié OVH Infra 3
- Proxmox 6.4
- Debian 11 dans un container LXC
- Nginx 1.18.0 dans le container
- PHP-FPM 7.4 dans le container
- site en Symfony 5.4
- stockage des fichiers (images) à travers un montage NFS

On vient de changer de machine chez OVH et on en a profité pour passer notre site (en gros 200 000 accès par jour, beaucoup d'images) de Apache/mod_php à Nginx et PHP-FPM.

Alors ca fonctionne très bien (baisse du temps de réponse, meilleur réactivité), mais (sinon je ne posterais ici hein) on a un problème récurent.

Le load system est dans l'ensemble bas, sauf par moment où tout s'affole en quelques secondes et tous les coeurs associés au container (soit 24) passe à 100% et Nginx (qui ne consomme par config que 16 coeurs sur les 24) ne sert plus que des pages 502 (impossible d'accéder au socket de php-fpm).
A priori le laod ne redescend pas sans redémarrer PHP-FPM (on a laissé quelques fois plusieurs minutes sans changement du load, mais on ne peut pas laisser le site indispo trop longtemps non plus hein).
Ce problème apparaît vraiment de façon aléatoire, il peut se passer plusieurs heures sans cet emballement des coeurs, et parfois 3 ou 4 fois dans la même heure.

Dans l'ensemble rien de significatif n’apparaît dans les logs de Nginx, et je dois dire que je ne sais pas trop où fouiller dans le système pour trouver un log qui me montrerait une origine au problème.
Pour le moment la seule contre-mesure appliquée, c'est un script qui surveille le load et qui redémarre PHP-FPM si le load dépasse une certaine valeur, ce qui n'est pas du tout viable je suis d'accord avec vous :).

Etant un peu à court d'idées où chercher, si quelqu'un a déjà croisé ce genre de pb, ou si vous avez des pistes pour tenter de voir quelque chose, on vous en serez très reconnaissant :).

  • # a defaut d'une piste

    Posté par  . Évalué à 1.

    Hello.

    P-e tu pourrais rajouter dans ton script rustine une petite redirection dans un fichier log de la commande ps, pour te faire une idee sur quel process pourrait etre a l'origine du pb

    ++
    Gi)

    • [^] # Re: a defaut d'une piste

      Posté par  . Évalué à 1.

      A priori c'est php-fpm qui embarque les coeurs, mais pas bête ca fera une trace de ce qui se passe juste avant le restart de php-fpm.

  • # log et parametrage de php-fpm

    Posté par  (site web personnel) . Évalué à 1.

    Vu que le problème ne semble pas venir de Nginx mais de php-fpm, il semble judicieux de consulter la log correspondante : /var/log/php7.xxx-fpm.log par défaut.

    200000 accès par jour, je suppose que des accès sont souvent concurrents, donc jeter un oeil aux paramètres de php-fpm et du pool associé pour que le nombre de process suive la demande.

    Sinon, avec ma mémoire défaillante, avoir des problèmes avec le couple Nginx et NFS me dit quelque chose. A creuser. (au pire tester Apache avec mod_event couplé à PHP-FPM, au niveau perf c'est quasi pareil)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.