Guide
Erreur 504 Gateway Timeout : causes et solutions
L’erreur 504 signale qu’un serveur intermédiaire a attendu trop longtemps la réponse de l’application. D’où vient ce délai et comment le corriger.
L’erreur 504 « Gateway Timeout » apparaît quand un serveur intermédiaire (proxy, répartiteur de charge, CDN ou serveur web placé devant une application) attend trop longtemps la réponse du serveur suivant et abandonne. Le site n’est pas forcément en panne : il est trop lent à répondre. Voici d’où vient ce délai dépassé et comment le corriger.
Que signifie l’erreur 504 ?
La norme HTTP définit le code 504 comme la réponse d’un serveur agissant en passerelle ou en proxy qui n’a pas reçu à temps la réponse du serveur en amont, nécessaire pour traiter la demande. Il diffère de l’erreur 502, où une réponse arrive mais elle est invalide.
Le message prend plusieurs formes : « 504 Gateway Timeout », « 504 Gateway Time-out », « HTTP Error 504 », ou une page d’erreur d’un CDN ou d’une box Internet.
Vous êtes visiteur : que faire ?
- Rechargez la page après une minute : les 504 accompagnent souvent un pic de trafic ou une opération lourde côté serveur.
- Évitez de renvoyer un formulaire (paiement, commande) plusieurs fois : la première demande a peut-être abouti malgré l’erreur. Vérifiez votre messagerie ou votre compte avant de recommencer.
- Si tous les sites affichent une 504, redémarrez votre box : un proxy ou un DNS local peut être en cause.
Les causes côté serveur
- Script trop long : export, import, génération de rapport, appel à une API externe lente.
- Base de données lente : requêtes non optimisées, tables verrouillées, serveur de base de données saturé.
- Serveur saturé : processeur ou mémoire au maximum, tous les processus PHP occupés.
- Délais trop courts entre le proxy et l’application, par rapport à la durée normale de certains traitements.
- Problème réseau entre le CDN ou le proxy et le serveur d’origine.
Diagnostiquer et corriger une erreur 504
- Identifiez le serveur qui renvoie la 504 : CDN, répartiteur de charge ou serveur web. Le style de la page d’erreur et les en-têtes de la réponse l’indiquent.
- Lisez les journaux : Nginx consigne « upstream timed out » dans son journal d’erreurs, avec l’adresse appelée et le délai écoulé.
- Trouvez ce qui est lent : journal des requêtes lentes de MySQL ou MariaDB (slow query log), journal lent de PHP-FPM (
request_slowlog_timeout), outils de profilage de l’application. - Optimisez avant d’allonger les délais : index de base de données, cache, traitements longs déplacés en tâche de fond (file de travaux, cron).
- Ajustez les délais si nécessaire, de façon cohérente sur toute la chaîne :
fastcgi_read_timeoutouproxy_read_timeoutcôté Nginx (60 secondes par défaut),max_execution_timeetrequest_terminate_timeoutcôté PHP.
Erreur 504 et ressources du serveur
Des 504 fréquentes aux heures de pointe indiquent souvent un serveur sous-dimensionné : trop peu de mémoire pour le nombre de processus PHP, ou des disques trop lents pour la base de données. Notre guide combien de RAM pour un serveur aide à estimer les besoins, et stockage NVMe explique l’effet des disques sur les bases de données. Si l’hébergement actuel atteint ses limites, le comparateur présente des VPS et des serveurs dédiés plus puissants.
504 et les autres erreurs serveur
| Code | Ce qui se passe |
|---|---|
| 500 Internal Server Error | L’application a planté. |
| 502 Bad Gateway | Le serveur intermédiaire reçoit une réponse invalide. |
| 503 Service Unavailable | Le serveur refuse temporairement de répondre. |
| 504 Gateway Timeout | Le serveur intermédiaire n’obtient pas de réponse à temps. |
Tous les codes sont présentés dans notre page codes d’erreur HTTP.
Sources
- RFC 9110, HTTP Semantics, 504 Gateway Timeout : rfc-editor.org
- Documentation Nginx, module proxy (proxy_read_timeout) : nginx.org ; module FastCGI : nginx.org
- Documentation PHP, configuration de PHP-FPM : php.net
- Documentation MariaDB, journal des requêtes lentes : mariadb.com