La mise en file d'attente des demandes se produit avant que la demande n'atteigne votre application (où réside l'agent). C'est pourquoi vous devez effectuer une configuration simple de l'agent et de vos hôtes de production pour profiter de cette fonctionnalité.
En-tête HTTP
Afin de signaler la mise en file d'attente des requêtes, la plupart des agents New Relic dépendent d'un en-tête HTTP défini par le serveur Web frontal (tel qu'Apache ou Nginx) ou l'équilibreur de charge (tel que HAProxy ou F5). Vous pouvez configurer ces serveurs frontaux pour définir l'horodatage dans l'en-tête HTTP qui représente le moment où la demande est entrée pour la première fois dans votre infrastructure de production.
Conseil
Définissez cet en-tête dès que possible après l'entrée de la demande dans votre infrastructure afin de réduire le risque de manquer des problèmes de performances dans votre infrastructure qui se produisent avant la définition de l'en-tête.
La plupart des agents New Relic interpréteront un en-tête X-Queue-Start
ou X-Request-Start
et l'utiliseront pour calculer la mise en file d'attente des requêtes. Les agents traitent ces en-têtes de manière identique. Inclure une valeur au format t=MICROSECONDS_SINCE_EPOCH
où MICROSECONDS_SINCE_EPOCH
est une valeur entière du nombre de microsecondes qui se sont écoulées depuis le début de l'époque Unix (par exemple, le 1er janvier 1970).
Presque tous les serveurs HTTP frontaux ou équilibreurs de charge peuvent être configurés pour ajouter cet en-tête. Les détails supplémentaires dépendent de la configuration spécifique de votre agent et de votre serveur. Pour plus d'informations, consultez les exemples de configuration de file d'attente de requêtes.
Agent Go
Avec l'agent Go, définissez l'un ou l'autre en-tête pour enregistrer une métrique pour celui-ci.
Agents Java, Node.js, Python et Ruby
Les versions les plus récentes des agents Java, Node.js, Python et Ruby offrent plus de flexibilité dans le format de l'en-tête X-Request-Start
ou X-Queue-Start
. Ces agents permettent de soumettre l'horodatage en secondes, millisecondes ou microsecondes sous forme de valeur entière ou à virgule flottante. Ces agents permettent également d’omettre le t=
initial dans la valeur d’en-tête.
En fonction de l’ordre de grandeur, ces agents interprètent automatiquement l’unité de temps comme des secondes, des millisecondes ou des microsecondes. New Relic peut le faire de manière fiable puisqu'un horodatage d'une milliseconde, interprété comme des microsecondes, entraînerait un temps d'attente de plus de 40 ans.
Python agent only: Lorsque vous utilisez Apache/mod_wsgi 3.4 ou supérieur, mod_wsgi insérera automatiquement un équivalent à l'en-tête X-Queue-Start
dans le dictionnaire d'environnement WSGI pour chaque requête. Cela marquera le moment précis où Apache a accepté la demande pour la première fois. La valeur définie par mod_wsgi sera récupérée et utilisée par l'agent Python si aucun en-tête X-Request-Start
ou X-Queue-Start
séparé n'a été configuré manuellement dans le frontend d'un serveur Web ou dans Apache lui-même.
Agent .NET
L'agent .NET ne nécessite pas (et ignorera) aucune configuration d'en-têtes HTTP pour calculer le temps d'attente. Il fonctionne en instrumentant directement le mécanisme de mise en file d'attente IIS et signale le temps de file d'attente comme la différence entre le moment où le constructeur HttpContext
s'exécute et le moment où l'événement HttpApplication.BeginRequest
se déclenche.
Le temps d'attente des demandes n'est signalé que pour les applications .NET Framework hébergées sur IIS (par exemple : applications ASP.NET). Il n'est pas signalé pour les applications ASP .NET Core (ciblant .NET Core ou framework), ni pour les applications OWIN auto-hébergées.
Agent PHP
L'agent PHP ne prend en charge que l'en-tête X-Request-Start
. Ceci identifie l'horodatage en microsecondes comme un entier, avec un t=
facultatif dans la valeur d'en-tête. Pour vous assurer que l'en-tête est lu correctement, vérifiez votre phpinfo()
sous la section PHP Variables et vérifiez que _SERVER["HTTP_X_REQUEST_START"]
existe et est au format attendu.
Si vous utilisez Nginx, consultez Exemples de configuration du serveur de file d’attente de demandes pour plus d’informations sur la définition de l’en-tête.