NeuBlack Friday – 50 % Rabatt auf die erste Zahlung
WordPress-Fehlerbehebung

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

Kurzantwort

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.

Diagnose

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.

UrsacheSo prüfen Sie esLösung
PHP-FPM läuft nichtDer 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äftigtDer 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 falschJede 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 abDas 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 outDer 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.
Anleitung

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.

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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
Mit MagicWP

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

Häufige Fragen.

Ist eine 502 meine Schuld oder die des Gastgebers?
Ein Pool, der nicht läuft, ist Infrastruktur; ein Pool, der durch eine langsame Abfrage gesättigt ist, ist Ihr Code. Die Unterscheidung ist in den ersten beiden Befehlen oben sichtbar.
Warum repariert das Neustarten von PHP es für eine Weile?
Denn ein Neustart befreit jeden steckengebliebenen Arbeiter auf einmal. Wenn das Ding, das ihn steckengeblieben hat, immer noch da ist, füllen sie sich wieder auf - weshalb eine 502, die nach einem Zeitplan zurückkehrt, eher ein Kapazitätsproblem als ein Absturz ist.
Kann ein einzelnes Plugin eine 502 auf der gesamten Website verursachen?
Ja, wenn es eine langsame ausgehende Anfrage bei jedem Seitenladen macht. Jede Anfrage hält einen Arbeiter, während er wartet, und sobald jeder Arbeiter wartet, steht alles andere hinter ihnen.
Wie unterscheidet sich das von einem 504?
Eine 502 ist eine unterbrochene Konversation - keine gültige Antwort kam zurück. Eine 504 ist eine Konversation, die keine Zeit mehr hat. Derselbe gesättigte Pool kann beides erzeugen, je nachdem, welche Zeitüberschreitung zuerst abläuft.
Verwandte Fehler

War es keiner davon?

Diese Fehler können im Browser ähnlich aussehen.