NouveauBlack Friday : 50 % de réduction sur votre premier paiement
Dépannage WordPress

502 Mauvaise passerelle

Le serveur web a atteint PHP et PHP n'a pas répondu. Nginx ou Apache est en train de signaler une conversation qui s'est terminée avant qu'elle ne commence.

502 Bad Gateway

Réponse rapide

PHP-FPM est soit en panne, soit ses travailleurs sont tous occupés. Vérifiez si le processus est en cours avant tout autre chose - un pool arrêté et un pool saturé produisent la même page et ont besoin de corrections différentes.

Diagnostic

Les causes les plus probables d’abord.

Parcourez la liste dans l’ordre. Vérifiez chaque cause avant de modifier quoi que ce soit : les correctifs diffèrent et une supposition coûte plus cher qu’une commande.

CauseComment vérifierCorrectif
PHP-FPM n'est pas en cours d'exécutionLe statut du service indique inactive ou échoué. Le journal du serveur web indique "connect() a échoué" ou "pas de live en amont".Commencer, puis lire pourquoi il s'est arrêté. Une piscine qui sortait de lui-même le faisait généralement parce que la machine était à court de mémoire.
Chaque travailleur est occupéLe pool de processus fonctionne, les erreurs 502 surviennent par vagues sous la charge, et le journal indique un délai d’attente dépassé en amont plutôt qu’un refus de connexion.Trouver la demande lente occupant les travailleurs. Ajouter des travailleurs affamés d'un point de départ lent achète des minutes, pas une solution.
Le chemin ou le port de la socket est incorrectChaque requête 502s, toujours, y compris les URL statiques qui traversent PHP. Le journal nomme une socket qui n'existe pas.Pointez le serveur web sur la prise de courant du pool. Ceci apparaît juste après une modification de version PHP.
Un travailleur s'est écrasé en milieu de demandeLe journal PHP-FPM enregistre un segfault ou un enfant sortant d'un signal, chronométré à la requête.Identifier l'extension en cause. Un segfault est rarement un code WordPress - c'est généralement une entrée de réunion d'extension native qu'il ne s'attendait pas.
Un proxy devant est en train de se terminerL'origine sert l'amende de page sur demande directe, et seulement l'URL publique 502s.Levez le temps de lecture du proxy, ou faites la réponse lente plus rapidement. L'origine n'est pas la chose à changer ici.
Guide

Corriger l’erreur, étape par étape.

Les commandes supposent un accès à WP-CLI et au terminal. Si vous n’en disposez pas, chaque étape explique comment procéder depuis le tableau de bord ou via SFTP.

  1. Demandez si PHP fonctionne du tout

    Cette réponse supprime la moitié des possibilités.

    systemctl status php8.5-fpm --no-pager | head -n 12
  2. Lire le journal du serveur web pour la plainte exacte en amont

    "Connection refusée" et "en amont" signifient différentes choses et pointent à différentes sections ci-dessus.

    grep -E 'upstream|502' /var/log/nginx/error.log | tail -n 20
  3. Regardez le journal PHP-FPM pour les pannes

    Sorties sur un signal, et avertissements que tous les enfants sont occupés, les deux vivent ici.

    tail -n 40 /var/log/php8.5-fpm.log
  4. Voyez ce que font les travailleurs.

    S'ils sont tous occupés par la même URL, vous avez trouvé le point final lent.

    wp cron event list --fields=hook,next_run_relative --status=due
  5. Redémarrez la piscine une fois que vous savez pourquoi

    Un redémarrage efface le symptôme. Faire sans lire le journal signifie le refaire demain.

    systemctl restart php8.5-fpm
Sur MagicWP

Ce que la plateforme prend en charge.

Chaque site a son propre pool PHP-FPM dans son propre conteneur avec sa propre limite de mémoire, de sorte qu'un site épuisant ses travailleurs ne peut pas 502 - l'échec reste là où il a commencé. Redémarrer les services est un bouton plutôt qu'une session SSH, et parce que le pool est dimensionné avec le plan plutôt que partagé sur une machine entière, un voisin occupé n'est pas l'une des causes de cette liste.

Questions fréquentes

Questions fréquentes.

Est-ce que 502 est ma faute ou celle de l'hôte ?
Soit, et le journal indique que. Un pool qui n'est pas en cours d'exécution est infrastructure; un pool saturé par une requête lente est votre code. La distinction est visible dans les deux premières commandes ci-dessus.
Pourquoi redémarrer PHP le réparer pendant un moment ?
Parce qu'un redémarrage libère tout travailleur coincé à la fois. Si la chose qui les a coincés est toujours là, ils remplissent à nouveau - c'est pourquoi un 502 qui revient sur un calendrier est un problème de capacité plutôt qu'un crash.
Un seul plugin peut-il causer un 502 sur tout le site ?
Oui, si elle fait une demande de départ lente sur chaque charge de page. Chaque demande tient un travailleur pendant qu'il attend, et une fois que chaque travailleur est en attente, tout le reste file derrière eux.
En quoi est-ce différent d'un 504 ?
Un 502 est une conversation interrompue - aucune réponse valide n'est revenue. Un 504 est une conversation qui a manqué de temps. Le même bassin saturé peut produire l'un ou l'autre, selon le moment de l'expiration premier.
Erreurs associées

Si le problème vient d’ailleurs.

Ces erreurs peuvent se présenter de façon similaire dans le navigateur.