Aller au contenu principal

Guides / Les codes de statut HTTP expliqués

Codes de statut 5xx expliqués : quand votre serveur est le problème

Un code de statut 5xx signifie que votre infrastructure a échoué, pas la requête du visiteur. Le serveur a accepté la requête, l'a comprise, puis n'a pas pu produire de réponse valide, donc chaque 5xx sur votre site est un incident qui vous appartient.

Ce qui distingue les 5xx des 4xx

La RFC 9110 définit les 5xx comme « Server Error » : le serveur sait qu'il a commis une erreur ou est incapable d'exécuter la méthode demandée. C'est toute la distinction. Un 404 dit « il n'y a rien ici ». Un 500 dit « il y a quelque chose ici et je me suis cassé en le produisant ».

Deux conséquences en découlent. D'abord, un 5xx est généralement rejouable, car la même requête peut très bien réussir une seconde plus tard une fois que le composant en échec se rétablit. Ensuite, les moteurs de recherche traitent un 5xx comme un signal temporaire et ralentissent l'exploration plutôt que de désindexer immédiatement, tandis qu'un 5xx persistant sur plusieurs jours finit quand même par vous coûter des pages indexées.

Quel maillon a échoué

Lisez un code 5xx comme une carte de l'endroit où la requête est morte. Presque tous les sites modernes placent au moins un proxy devant l'application, donc le code vous dit de quel côté de cette frontière l'échec s'est produit.

CodeQui l'a produitCe qui s'est passé
500 Internal Server ErrorL'application elle-mêmeException non gérée ou condition inattendue à l'intérieur de l'application
501 Not ImplementedLe serveurLa méthode de requête n'est pas prise en charge du tout
502 Bad GatewayLe proxy, le CDN ou le répartiteur de chargeLe backend a répondu, mais avec quelque chose d'invalide, ou a fermé la connexion
503 Service UnavailableLe serveur ou le proxy, délibérémentSurchargé ou en maintenance, et refusant le travail exprès
504 Gateway TimeoutLe proxy, le CDN ou le répartiteur de chargeLe backend n'a jamais répondu à temps
505 HTTP Version Not SupportedLe serveurLa version du protocole dans la requête n'est pas prise en charge

502, 503 et 504 portent la plus grande valeur diagnostique, car chacun nomme un échec différent du même backend : réponse invalide, réponse refusée, aucune réponse. Le guide du 502 Bad Gateway couvre le premier d'entre eux en profondeur, y compris les lignes de journal de proxy qui identifient la faute exacte.

Causes courantes derrière les réponses 5xx

  • Plantages d'application. Une exception non gérée, une connexion à la base de données échouée ou une valeur nulle à un endroit inattendu produit un 500 sur toutes les routes qui touchent le chemin de code cassé.
  • Processus backend non actif. Un serveur d'application arrêté, un pool PHP-FPM mort ou un conteneur qui a échoué sa vérification de santé ne donne rien au proxy avec qui parler, ce qui se manifeste par un 502.
  • Épuisement des ressources. Mémoire insuffisante, descripteurs de fichiers épuisés, threads de travail épuisés ou connexions à la base de données épuisées. Commence généralement par des erreurs intermittentes sous charge avant de devenir constant.
  • Dépendances lentes. Une requête lente, une API tierce lente ou un démarrage à froid pousse le temps de réponse au-delà du délai d'expiration du proxy et se transforme en 504.
  • Déploiements et redémarrages. Toute fenêtre où l'ancien processus s'est arrêté et où le nouveau n'a pas encore commencé à servir produit une rafale de 502 ou de 503.
  • Erreurs de configuration. Une adresse amont erronée, une mauvaise configuration TLS entre le proxy et le backend, ou une incompatibilité de protocole comme parler HTTP à un port HTTPS.
  • Disque plein. Une cause sous-estimée. Les journaux ou fichiers temporaires remplissent le volume, les sessions ou caches cessent d'écrire, et l'application commence à échouer de façons qui paraissent aléatoires.

Comment travailler sur un 5xx

  1. Confirmez le code et son origine. Récupérez les en-têtes directement et regardez quel composant a signé la réponse :
    curl -sS -o /dev/null -D - https://example.com/
    Un en-tête Server: ou de CDN sur l'erreur vous dit si c'est la périphérie ou l'origine qui l'a générée.
  2. Testez l'origine directement, en contournant le proxy. Si le backend répond 200 sur son propre port pendant que l'URL publique répond 502, la faute est dans la couche proxy ou dans le lien entre les deux.
  3. Lisez ensuite le journal d'erreurs du proxy, pas le journal de l'application. Les proxys inverses nomment l'échec précisément, par exemple connect() failed (111: Connection refused) ou upstream timed out, ce qui sépare immédiatement « backend hors service » de « backend lent ».
  4. Puis lisez le journal de l'application. Pour un 500, la trace de pile est la réponse. Pour 502 et 504, l'application ne journalise souvent rien du tout, et cette absence est elle-même informative.
  5. Vérifiez les ressources sur l'hôte. Mémoire, disque, nombre de connexions et saturation des travailleurs. Un 5xx intermittent sous trafic est presque toujours une limite atteinte.
  6. Regardez ce qui a changé. Les déploiements, les poussées de configuration, les renouvellements de certificats et les mises à jour de dépendances expliquent une grande part des apparitions soudaines de 5xx.

Détecter les erreurs 5xx intermittentes

Les erreurs 5xx sont souvent intermittentes, ce qui les rend difficiles à attraper à la main : la page que vous rechargez fonctionne, et celle que votre client a chargée non. Une vérification HTTP programmée s'exécute en continu et échantillonne le site bien plus souvent que vous ne le pourriez, de sorte qu'une série d'erreurs devienne visible comme un schéma plutôt que comme des plaintes éparses. Vérifier depuis de nombreux emplacements distingue aussi une vraie panne serveur d'un problème de routage ou de périphérie qui n'affecte qu'une partie du monde, c'est pourquoi la surveillance de disponibilité distribuée utilise des points de contrôle répartis à travers les régions plutôt qu'un seul point de vue. Si le code en échec s'avère être 403, 404 ou 429 à la place, la requête n'a jamais atteint un backend cassé, et le guide de la famille 4xx est le bon point de départ.

Vérifier maintenant

Lancez la vérification gratuite sur votre propre site, sans créer de compte.

HTTP check

Surveiller en permanence

Soyez alerté dès que quelque chose casse : HostTracker vérifie depuis plus de 300 emplacements et vous prévient par e-mail, SMS, Slack, Telegram et plus encore.

Fonctionnalités HostTracker

Plus dans cette section: Les codes de statut HTTP expliqués