[Nouveau] Suivez le temps d'attente des requêtes avec X-Request-Start

10 octobre 2023 - 5 min de lecture
[Nouveau] Suivez le temps d'attente des requêtes avec X-Request-Start

Scalingo améliore son intégration avec les principales Application Performance Monitoring (APM) du marché en incluant le header X-Request-Start sur toutes les requêtes qui passent par nos serveurs de routage. Grâce à cela, il est maintenant plus facile que jamais de suivre le temps d'attente d'une requête dans la file d'attente, avant qu'elle ne soit traitée par votre application.

Qu'est-ce que le temps d'attente d'une requête?

Le temps d'attente d'une requête est le temps écoulé entre le moment où les routeurs de Scalingo reçoivent une requête et le moment où le code de votre application traite la requête. En d'autres termes, c'est le temps d'attente d'une requête avant que votre code d'application ne commence à la traiter.

Comment fonctionne la file d'attente des requêtes ?

Lors de l'exécution d'un service web sur une plateforme as-a-service comme Scalingo, les requêtes HTTP adressées à un service web passent par un routeur HTTP. Le routeur Scalingo est basé sur OpenResty qui est un reverse proxy extrêmement puissant et dynamique, capable de traiter des milliers de requêtes par seconde.

Chaque routeur de l'infrastructure Scalingo possède une requests queue (qui agit comme un parking temporaire), empilant les requêtes HTTP jusqu'à ce que le service web destinataire soit prêt à les traiter.

Pourquoi X-Request-Start est-il utile ?

Le suivi du temps passé par les requêtes dans la file d'attente peut être très utile pour mieux comprendre les performances d'un service web. C'est pourquoi nous avons activé le header X-Request-Start globalement. À partir d'aujourd'hui, chaque requête qui passe par nos serveurs routeurs contiendra l'horodatage UNIX du moment où la requête a été reçue pour la première fois.

Une fois que votre application commence à traiter cette requête spécifique, vous, ou votre APM (Application Performance Management), pouvez comparer l'heure actuelle à l'heure de X-Request-Start pour en déduire le "Request Queue Time" ou le "Request Queuing" (selon l'outil que vous utilisez).

En fonctionnement normal, votre application est toujours disponible pour traiter les requêtes HTTP et le temps d'attente des requêtes est proche de 0.

Mais si des demandes parviennent à votre application plus rapidement qu'elle ne peut y répondre, le routeur Scalingo continuera à les distribuer de manière aléatoire, jusqu'à ce qu'elles commencent à s'accumuler dans la file d'attente. Pour chaque application, cette file d'attente est plafonnée à 50 requêtes par conteneur web (l'aire de stationnement temporaire mentionnée ci-dessus). Lorsque toutes les files d'attente sont pleines, le routeur renvoie 503 Service Unavailable et ces requêtes sont terminées sans que l'application en soit consciente. Personne ne souhaite cela.

C'est la raison pour laquelle il est intéressant de surveiller le temps d'attente des requêtes. De nombreux facteurs peuvent avoir un impact négatif sur cette métrique. Le problème le plus courant est de ne pas avoir assez de conteneurs d'application (jetez un oeil à "how to scale your application with Scalingo"), mais cela peut aussi avoir quelque chose à voir avec la taille de la charge utile, ou même avec un code d'application lent.

Fonctionne mieux avec un Application Performance Monitoring (APM)

Vous avez besoin d'une vue globale de votre application pour pouvoir tirer des conclusions pertinentes. C'est pourquoi cette fonctionnalité est un excellent complément pour une meilleure intégration APM !Nos clients aiment utiliser ces outils pour surveiller leurs applications en temps réel, en capturant des informations détaillées sur les performances, les requêtes de base de données, les appels au cache, les requêtes HTTP externes, etc. Il est ainsi plus facile d'identifier et de résoudre rapidement les problèmes de performance.

Vous utilisez AppSignal, Datadog, New Relic ou Scout APM ? Vous pouvez déjà configurer une alerte pour surveiller le temps d'attente des requêtes de votre application.

Compatible avec tous les langages et frameworks supportés par Scalingo

Vous n'utilisez pas encore d'APM ? Nous vous conseillons vivement d'en utiliser un pour mieux comprendre les performances de votre application. Mais en attendant, vous pouvez mettre à jour le code de votre application pour exposer le header X-Request-Start. Il est accessible à partir de tous les langages supportés par Scalingo et n'a pas d'impact sur les performances. Vous pouvez l'utiliser pour déboguer et surveiller les performances de notre application, ou simplement l'ignorer pour le moment. Les données seront disponibles quand vous en aurez besoin !

Prêts à vous aider à vous concentrer sur votre code

Ces données sont déjà disponibles sans aucun travail supplémentaire ! Lisez notre page de documentation sur le header X-Request-Start et identifiez les moyens d'améliorer la réactivité de votre application.

Essayez de mettre à l'échelle votre application, en utilisant un APM pour identifier les requêtes lentes et les améliorations du code, déployer les changements dans une application de révision pour valider vos hypothèses et offrir une expérience plus fluide à vos clients ! Vous trouverez tout ce que vous devez savoir dans la documentation Scalingo.

Continuez à coder !

Partager l'article
Étienne Michon
Étienne Michon
Docteur en informatique, Étienne Michon occupe actuellement le poste d'ingénieur R&D chez Scalingo. Il était l'un des premiers employés de Scalingo et il contribue grandement à faire grandir ce blog grâce à ses articles techniques de qualité.

Essayez gratuitement Scalingo

30 jours d'essai gratuit / Pas de CB nécessaire / Hébergé en France