Bonjour,
J'ai un souci intermittent de "idle timeout" sur FastCGI vers un script PHP. La valeur du timeout semble de 160 secondes. Ma question est: peut-on l'allonger dans la config du site?
Le contexte: J'ai un site nommé tsduck.io hébergé sur le cluster026. C'est le site d'un projet OpenSource nommé TSDuck. Les derniers binaires "nightly builds" du projet sont dispos sur le site et publiés automatiquement chaque nuit. Pour cette mise à jour, le serveur d'intégration continue du projet (sur GitHub) envoie une requète REST à tsduck.io. Ca déclenche un script PHP qui va télécharger les derniers binaires depuis le serveur d'intégration continue et les publier sur le site. Une fois ces actions terminées, le script PHP renvoie une réponse JSON (classique d'un REST API).
Parfois, la tâche d'intégration continue sur GitHub reçoit une erreur du serveur au lieu de la réponse JSON:
500 Internal Server Error
Internal Server Error
The server encountered an internal error or
misconfiguration and was unable to complete
your request.
Please contact the server administrator at
postmaster@tsduck.io to inform them of the time this error occurred,
and the actions you performed just before this error.
More information about this error may be available
in the server error log.
En regardant sur les logs du serveur, on voit:
… AH10141: FastCGI: comm with server "…/get-nightly-builds/index.php" aborted: idle timeout (160 sec)
… AH10149: FastCGI: incomplete headers (0 bytes) received from server "…/get-nightly-builds/index.php"
La communication entre le frontal Web et PHP est donc coupée au bout de 160 secondes. PHP, quant à lui, a l'air de continuer son boulot puisque les binaires sont correctement téléchargés et publiés. Le timeout d'exécution PHP est de 300 secondes (max_execution_time: 300, vu dans phpinfo).
A noter que mettre un idle timeout du FastCGI gateway plus court que le max execution time de PHP ne me parait pas très cohérent. Mais ce n'est que mon avis…
Il me semble donc que le téléchargement et la publication des binaires journaliers peut très occasionnellement prendre plus de 160 secondes (les downloads d'artifacts dans "GitHub Actions" sont parfois lents à réagir). PHP continue son boulot mais la gateway FastCGI semble couper la communication au bout de 160 secondes et une erreur HTML est renvoyée au client REST au lieu de la réponse JSON attendue.
D'après ce que je peux voir sur le net, l'idle timeout FastCGI est positionné dans la config du VHost sous Apache;
FastCgiExternalServer … -idle-timeout 160 …
Je ne demande si, dans les configs OVH accessibles aux admins de site, on peut changer cette valeur.
Merci de votre aide.