Maison >Opération et maintenance >Nginx >Comment résoudre le problème de mauvaise passerelle nginx 502

Comment résoudre le problème de mauvaise passerelle nginx 502

步履不停
步履不停original
2019-06-21 10:30:5913243parcourir

Comment résoudre le problème de mauvaise passerelle nginx 502

Nginx 502 Bad Gateway signifie que le PHP-CGI demandé a été exécuté, mais pour une raison quelconque (généralement un problème de lecture des ressources), il n'a pas été terminé et le PHP-CGI le processus a une terminaison, d'une manière générale, Nginx 502 Bad Gateway est lié aux paramètres de php-fpm.conf.

Les raisons courantes peuvent être qu'il n'y a pas assez de processus php-cgi, que le temps d'exécution de php est long (mysql est lent) ou que le processus php-cgi s'arrête et qu'une erreur 502 se produit.

1. Dans l'environnement installé, un problème 502 se produit après une exécution pendant un certain temps. Généralement, c'est parce que le processus php-cgi par défaut est 5. Cela peut être dû à des processus PHPCGI insuffisants. un problème se produit. /usr/local doit être modifié. /php/etc/php-fpm.conf Augmentez la valeur max_children de manière appropriée.

2. Délai d'exécution PHP, modifiez /usr/local/php/etc/php.ini et changez max_execution_time à 300

3. Espace disque insuffisant, vous pouvez utiliser le # df -h. commande pour vérifier l'utilisation du disque

4. Le processus php-cgi est mort.

Les méthodes de dépannage habituelles sont les suivantes :

1 Vérifiez le nombre de processus de php fastcgi (valeur max_children)

# netstat -anop | grep php-cgi | wc -l
# netstat -anpo | grep php-fpm | wc -l

Si l'affichage. est 5

2. Afficher le processus actuel

# ps aux | grep php-fpm 观察fastcgi/php-fpm进程数,假如使用的进程数等于或高于5个,说明需要增加。

3 Ajustez les paramètres pertinents de /usr/local/php/etc/php-fpm.conf

pm.max_children = 5
request_terminate_timeout = 60
<.>max_children jusqu'à 5 processus, sur la base de 20 Mo de mémoire par processus, jusqu'à 100 Mo. Cela fait 1 minute. Si max_children augmente, plus les processus php-cgi seront traités rapidement et il y aura moins de requêtes en file d'attente.


Mais le paramètre max_children doit également être défini en fonction des performances du serveur. De manière générale, la mémoire consommée par chaque php-cgi sur un serveur est d'environ 20 Mo dans des circonstances normales. La décision réelle dépend de la mémoire achetée pour votre serveur.

Le temps d'exécution de request_terminate_timeout est de 60 secondes. La valeur request_terminate_timeout peut être définie en fonction des performances du serveur. De manière générale, plus les performances sont bonnes, plus vous pouvez les régler à un niveau élevé, entre 20 et 30 minutes.

4. Le temps d'exécution de certains programmes PHP dépasse le temps d'attente de Nginx. Vous pouvez augmenter de manière appropriée le délai d'attente de FastCGI dans le fichier de configuration nginx.conf, par exemple :

http
{
......
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
......}

Plus de Nginx Pour les articles techniques connexes, veuillez visiter la colonne

Tutoriel Nginx pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn