Temps de file d’attente
Une configuration courante pour une application Ruby est que le serveur web Ruby tel qu’Unicorn ou Puma s’exécute derrière un autre serveur web (externe) tel que Nginx ou Apache. Ceux-ci sont généralement utilisés pour terminer les connexions SSL et gérer les assets statiques par exemple. Lorsque votre serveur web Ruby est occupé à traiter des requêtes, Nginx ou Apache peut toujours accepter de nouvelles connexions et attendre qu’un processus Ruby devienne disponible pour traiter la requête. Le serveur web externe met la requête en file d’attente entre-temps. Idéalement, il y a suffisamment de capacité pour que le serveur web externe n’ait jamais à attendre Ruby, mais en pratique, cela peut se produire lorsqu’il y a un pic soudain de requêtes. Un bon indicateur de capacité est donc la métrique du temps de file d’attente, c’est-à-dire le temps écoulé entre le moment où le serveur web externe a accepté la requête et le moment où Ruby la traite. Un long temps de file d’attente sur une période prolongée indique que vous devrez augmenter le nombre de processus/threads Ruby pour traiter les requêtes, ou faire évoluer davantage de serveurs web. Vous pouvez trouver les métriques de temps de file d’attente sur la page des graphiques de performance :
Configuration
AppSignal suit automatiquement le temps de file d’attente sur Heroku, mais si vous exécutez votre propre serveur avec NGINX ou Apache, vous devrez configurer les en-têtes corrects pour que le suivi du temps de file d’attente fonctionne.NGINX
Vous pouvez utiliser la variable${msec} avec NGINX 1.2.6 ou supérieur. C’est l’heure actuelle en millisecondes.
Apache
Dans Apache, mod_headers expose une variable"$t" qui peut être utilisée pour suivre le temps de file d’attente. Ajoutez l’en-tête comme suit :