GNU/Linux >> Tutoriels Linux >  >> Linux

502 Erreur de passerelle incorrecte NGINX [Solution]

Que ressentez-vous lorsque votre client envoie sur WhatsApp une capture d'écran de son site Web indiquant 502 bad gateway NGINX  Erreur? Rien ne peut être pire que cela (pour commencer votre journée), n'est-ce pas ? Bien que je souhaite que vous ne commenciez pas votre journée comme ça, je vais vous expliquer comment récupérer si vous étiez dans cette situation.

Avant de discuter du problème et de sa solution, je voudrais rappeler que mon environnement d'hébergement est alimenté par le serveur Web NGINX avec un gestionnaire PHP FPM.

Raison de l'erreur 502 Bad Gateway NGINX

J'ai commencé à déboguer l'erreur à partir du journal des erreurs NGINX (/var/log/nginx/nginx.log) et trouvé le message d'erreur ci-dessous.

2019/12/11 04:30:43 [error] 27570#27570: *48599 connect() to unix:/var/run/php-fpm/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 17.58.98.98, server: techglimpse.com, request: "GET /pure-css3-shapes/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "techglimpse.com"

Il est évident que le message d'erreur est lié au gestionnaire PHP et cela m'a redirigé vers le journal des erreurs PHP-FPM à /var/log/php-fpm/error.log et j'ai remarqué le message d'erreur ci-dessous :

[08-Dec-2019 03:30:01] NOTICE: error log file re-opened
[10-Dec-2019 21:00:16] WARNING: [pool www] server reached pm.max_children setting (50), consider raising it

Il est maintenant clair que le processus maître PHP-FPM est incapable de générer de nouveaux processus enfants en raison de pm.max_children atteint la limite, provoquant une erreur de passerelle 502 incorrecte.

Comment corriger l'erreur :le serveur a atteint le paramètre pm.max_children, envisagez de l'augmenter

La solution est d'augmenter le pm.max_children limite basée sur les spécifications du serveur. Notez que n'augmentez pas aveuglément la limite, car si le site Web reçoit un trafic énorme, les travailleurs ne sont jamais recyclés, l'utilisation de la RAM augmentera indéfiniment avec le temps et le serveur sera en état de mémoire insuffisante.

Par conséquent, pm.max_children doit être augmenté avec précaution et progressivement tout en surveillant l'utilisation du swap.

pm.max_children = ((total RAM in MB) - (RAM usage by MySQL and others taken together in MB)) / 80
Noter

Ici, 80 Mo est le poids moyen d'un processus de travail PHP-FPM.

Sur la base du calcul ci-dessus, augmentez la valeur pm.max_children dans le fichier de configuration de domaine respectif de PHP-FPM. Dans mon cas :  /etc/php-fpm.d/techglimpse.conf

pm = ondemand
pm.max_children = 200

Redémarrez maintenant les services PHP-FPM et NGINX

systemctl restart php-fpm nginx
Noter

Filtrez tous les domaines qui ont été affectés avec pm.max_children et appliquez les paramètres ci-dessus uniquement à ceux qui sont concernés.

Comment trouver la mémoire utilisée par les applications

Exécutez la commande ci-dessous pour trouver la mémoire utilisée par les applications respectives.

#ps -o pid,user,%mem,command ax | sort -b -k3 -r

PID USER %MEM COMMAND
1355 mysql 14.5 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
543 root 0.3 /usr/lib/systemd/systemd-journald
9254 nginx 0.3 php-fpm: pool www
9251 nginx 0.3 php-fpm: pool www

Dans l'exemple ci-dessus, MySQL utilise près de 14 % de la mémoire totale.


Linux
  1. Erreur :la validation md5 a échoué pour un problème de téléchargement possible avec PyYAML-3.11.zip ? [Solution]

  2. Impossible de localiser Module/Load/Conditional.pm [Solution]

  3. Impossible de localiser l'erreur Perl Test/Harness.pm :[Solution]

  4. Erreur lors de l'installation de Nginx sur Ubuntu 16.04 ?

  5. "Mauvais identifiant pour le dépôt :mon dépôt, octet =2" erreur de mise à jour yum

Correction de l'erreur Nginx :413 Entité de requête trop grande

Intégration de PlaySMS Kannel SMS Gateway sur NGINX + Debian

Comment réparer les connexions de travail ne sont pas assez d'erreur sur Nginx

Comment réparer le délai d'expiration de la passerelle 504 sur Nginx

Comment réparer l'erreur 502 Bad Gateway sur Nginx

getpwnam(www) a échoué dans /etc/nginx/nginx.conf