Le serveur relais (nginx, un proxy, Cloudflare) a attendu la réponse de WordPress, puis il a abandonné au bout du délai prévu. La page n’a pas forcément planté : elle a pris trop de temps. L’erreur touche souvent une action lourde comme un import, une sauvegarde ou une page très chargée.
Pourquoi cette erreur apparaît
- Un traitement long dépasse le délai du serveur : import de produits, export, sauvegarde, régénération d’images.
- Des requêtes lentes sur la base de données, dues à une table volumineuse ou à une extension mal optimisée.
- Le site attend la réponse d’un service extérieur (API, serveur de licence, flux) qui tarde à venir.
- Le serveur manque de ressources et laisse les demandes en file d’attente.
- Les délais de nginx, du proxy ou de PHP sont plus courts que ce que demande le site.
Comment corriger le problème
Identifier l’action qui déclenche l’erreur
Notez la page ou le bouton en cause. Une erreur sur tout le site oriente vers le serveur ; une erreur limitée à un import ou à l’enregistrement d’une page oriente vers ce traitement précis.
Découper les traitements lourds
Importez vos fichiers par lots plus petits et programmez les sauvegardes aux heures creuses. Beaucoup d’extensions d’import permettent de régler le nombre d’éléments traités à chaque passage.
Chercher la requête ou l’extension lente
L’extension Query Monitor affiche la durée de chaque requête à la base de données et des appels vers des services extérieurs. Désactivez ensuite l’extension la plus lente pour confirmer le diagnostic.
Lancer les tâches longues avec WP-CLI
WP-CLI, l’outil de WordPress en ligne de commande, ne passe pas par le serveur web : ses tâches ne sont donc pas coupées par le délai de nginx. Si votre hébergement offre un accès SSH, lancez ainsi la régénération des miniatures ou les tâches planifiées en attente.
wp media regenerate --yes
wp cron event run --due-now
Ajuster les délais du serveur
Sur un VPS, alignez les délais de nginx et de PHP sur le besoin réel, sans les gonfler à l’excès : un délai très long masque un problème de performance au lieu de le régler. Rechargez ensuite nginx et PHP-FPM.
# nginx, dans le bloc location qui transmet à PHP
fastcgi_read_timeout 300;
; php.ini
max_execution_time = 300
Ne relancez pas un import interrompu sans vérifier ce qui a déjà été créé, sous peine de doublons, et sauvegardez la base avant de reprendre.
Un autre message d'erreur ? Collez-le dans le décodeur : il le reconnaît et vous oriente vers la bonne fiche.
Ouvrir le décodeur