502 Bad Gateway
Der Webserver erreichte PHP und PHP antwortete nicht. Nginx oder Apache berichtet von einer Konversation, die endete, bevor sie begann.
502 Bad Gateway
PHP-FPM ist entweder ausgefallen oder seine Mitarbeiter sind alle beschäftigt. Überprüfen Sie, ob der Prozess vor allem anderen läuft - ein gestoppter Pool und ein gesättigter Pool erzeugen die gleiche Seite und benötigen unterschiedliche Korrekturen.
Die wahrscheinlichsten Ursachen zuerst.
Gehen Sie die Liste der Reihe nach durch. Prüfen Sie jede Ursache, bevor Sie etwas ändern, da die Lösungen unterschiedlich sind und eine Vermutung mehr Zeit kostet als ein Befehl.
| Ursache | So prüfen Sie es | Lösung |
|---|---|---|
| PHP-FPM läuft nicht | Der Servicestatus sagt inaktiv oder fehlgeschlagen. Das Webserverprotokoll sagt "connect() fehlgeschlagen" oder "keine Live-Upstreams". | Starten Sie es, dann lesen Sie, warum es aufhörte. Ein Pool, der von selbst ausstieg, tat dies normalerweise, weil der Speicher ausging. |
| Jeder Arbeiter ist beschäftigt | Der Pool läuft, die 502er kommen in Staus, und das Protokoll sagt, dass der Upstream auszeitet, anstatt abgelehnt zu werden. | Wenn man Arbeiter zu einem Pool hinzufügt, der von einem langsamen Endpunkt ausgehungert ist, kauft man Minuten, keine Lösung. |
| Der Socket Path oder Port ist falsch | Jede Anfrage 502s, konsistent, einschließlich statisch aussehender URLs, die über PHP weitergeleitet werden. Das Protokoll benennt einen Socket, der nicht existiert. | Richten Sie den Webserver auf den Socket, auf den der Pool tatsächlich hört. Dies erscheint direkt nach einer Änderung der PHP-Version. |
| Ein Arbeiter stürzte Mitte des Antrags ab | Das PHP-FPM-Protokoll zeichnet einen Segfault oder ein Kind auf, das auf ein Signal austritt, das auf die Anforderung getaktet ist. | Ein segfault ist selten WordPress-code es ist normalerweise ein nativer extension-meeting-eingang, den es nicht erwartet hat. |
| Ein Proxy vorn ist Timing out | Der Ursprung dient der Seite fein, wenn direkt angefordert, und nur die öffentliche URL 502s. | Erhöhen Sie den Lesezeitüberschreitung des Proxys oder machen Sie die langsame Antwort schneller. Der Ursprung ist nicht das, was hier zu ändern. |
Schritt für Schritt zur Lösung.
Die Befehle setzen WP-CLI und Shell-Zugriff voraus. Jeder Schritt erklärt, was er tut, damit Sie ihn bei Bedarf im Dashboard oder per SFTP ausführen können.
Fragen Sie, ob PHP überhaupt läuft
Diese eine Antwort entfernt die Hälfte der Möglichkeiten.
systemctl status php8.5-fpm --no-pager | head -n 12
Lesen Sie das Webserver-Log für die genaue Upstream-Beschwerde
"Verbindung abgelehnt" und "Upstream timed out" bedeuten verschiedene Dinge und zeigen auf verschiedene Abschnitte oben.
grep -E 'upstream|502' /var/log/nginx/error.log | tail -n 20
Schauen Sie sich das PHP-FPM-Log für Abstürze an
Exits auf ein signal, und Warnungen, dass alle Kinder beschäftigt sind, beide leben hier.
tail -n 40 /var/log/php8.5-fpm.log
Sehen Sie, was die Arbeiter tatsächlich tun
Wenn sie alle mit der gleichen URL belegt sind, haben Sie den langsamen Endpunkt gefunden.
wp cron event list --fields=hook,next_run_relative --status=due
Starten Sie den Pool neu, sobald Sie wissen, warum
Ein Neustart löscht das Symptom. Wenn man es ohne das Protokoll zu lesen macht, dann macht man es morgen wieder.
systemctl restart php8.5-fpm
Darum kümmert sich die Plattform.
Jede Site hat ihren eigenen PHP-FPM-Pool in ihrem eigenen Container mit ihrer eigenen Speichergrenze, so dass eine Site, die ihre Mitarbeiter erschöpft, nicht 502 anderer Seiten ausschöpfen kann - der Fehler bleibt dort, wo er begonnen hat. Neustarten von Diensten ist eher ein Button als eine SSH-Sitzung, und da der Pool mit dem Plan bemessen ist, anstatt über eine ganze Maschine geteilt zu werden, ist ein geschäftiger Nachbar keine der Ursachen auf dieser Liste.
Häufige Fragen.
Ist eine 502 meine Schuld oder die des Gastgebers?
Warum repariert das Neustarten von PHP es für eine Weile?
Kann ein einzelnes Plugin eine 502 auf der gesamten Website verursachen?
Wie unterscheidet sich das von einem 504?
War es keiner davon?
Diese Fehler können im Browser ähnlich aussehen.