Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So lösen Sie das Problem mit dem fehlerhaften Nginx 502-Gateway

So lösen Sie das Problem mit dem fehlerhaften Nginx 502-Gateway

步履不停
步履不停Original
2019-06-21 10:30:5913172Durchsuche

So lösen Sie das Problem mit dem fehlerhaften Nginx 502-Gateway

Nginx 502 Bad Gateway bedeutet, dass das angeforderte PHP-CGI ausgeführt wurde, aber aus irgendeinem Grund (normalerweise ein Problem beim Lesen von Ressourcen) nicht abgeschlossen wurde und das PHP-CGI Der Prozess wird beendet. Im Allgemeinen hängt Nginx 502 Bad Gateway mit den Einstellungen von php-fpm.conf zusammen.

Häufige Gründe können sein, dass nicht genügend PHP-CGI-Prozesse vorhanden sind, die PHP-Ausführungszeit lang ist (MySQL ist langsam) oder der PHP-CGI-Prozess abstürzt und ein 502-Fehler auftritt.

1. In der installierten Umgebung tritt nach einiger Zeit ein 502-Problem auf. Dies liegt im Allgemeinen daran, dass der Standard-PHP-CGI-Prozess 5 ist. Dies kann an unzureichenden PHP-CGI-Prozessen liegen Das Problem tritt auf. /usr/local muss geändert werden. /php/etc/php-fpm.conf Erhöhen Sie den max_children-Wert entsprechend.

2. PHP-Ausführungszeitüberschreitung, ändern Sie /usr/local/php/etc/php.ini und ändern Sie max_execution_time auf 300

3. Nicht genügend Speicherplatz, Sie können # df -h verwenden Befehl zum Überprüfen der Festplattennutzung

4. Der PHP-CGI-Prozess ist gestorben.

Die üblichen Methoden zur Fehlerbehebung sind wie folgt:

1. Überprüfen Sie die Anzahl der Prozesse von php fastcgi (max_children-Wert)

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

Wenn die Anzeige ist 5

2. Sehen Sie sich den aktuellen Prozess an

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

3 Passen Sie die relevanten Einstellungen von /usr/local/php/etc/php-fpm.conf an

pm.max_children = 5
request_terminate_timeout = 60

max_children bis zu 5 Prozesse, basierend auf 20 MB Speicher pro Prozess, bis zu 100 MB. Das ist 1 Minute. Wenn max_children steigt, werden mehr PHP-CGI-Prozesse schneller verarbeitet und es werden weniger Anfragen in der Warteschlange stehen.

Aber die Einstellung von max_children muss auch entsprechend der Leistung des Servers festgelegt werden. Im Allgemeinen beträgt der von jedem PHP-CGI auf einem Server verbrauchte Speicher unter normalen Umständen etwa 20 MB. Die tatsächliche Entscheidung hängt vom für Ihren Server erworbenen Speicher ab.

Die Ausführungszeit von request_terminate_timeout beträgt 60 Sekunden. Der Wert von request_terminate_timeout kann entsprechend der Leistung des Servers festgelegt werden. Im Allgemeinen gilt: Je besser die Leistung, desto höher können Sie sie einstellen, zwischen 20 und 30 Minuten.

4. Die Ausführungszeit einiger PHP-Programme überschreitet die Wartezeit von Nginx. Sie können die FastCGI-Timeout-Zeit in der Konfigurationsdatei nginx.conf entsprechend erhöhen, zum Beispiel:

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

Mehr Nginx Für verwandte technische Artikel besuchen Sie bitte die Spalte Nginx-Tutorial, um mehr zu erfahren!

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem mit dem fehlerhaften Nginx 502-Gateway. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn