Heim > Artikel > Betrieb und Instandhaltung > 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!