Afin de signaler la mise en file d'attente des demandes, les 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). Ces exemples utilisent l'en-tête X-Request-Start
, car il bénéficie d'un support plus large sur la plateforme.
Si cela ne fonctionne pas avec la configuration de votre serveur pour la mise en file d'attente des requêtes, essayez d'utiliser l'en-tête X-Queue-Start
. La syntaxe devrait par ailleurs être la même.
Apache
Le module mod_headers d'Apache inclut une variable %t
qui est correctement formatée. Pour activer la création de rapports sur la file d'attente des demandes, ajoutez ce code à votre configuration Apache :
RequestHeader set X-Request-Start "%t"
Nginx
Si vous utilisez Nginx version 1.2.6 ou supérieure et la dernière version de l'agent Ruby, Python ou PHP, Nginx peut être facilement configuré pour signaler le temps d'attente. (Pour les versions Nginx 1.2.6 ou inférieures, vous devez recompiler Nginx avec un module ou un patch.)
La configuration avec Nginx 1.2.6 ou supérieur utilise la variable ${msec}
, qui est un nombre en secondes avec une résolution en millisecondes. Pour plus d'informations, voir http://nginx.org/en/docs/http/ngx_http_core_module.html#variables.
Ajoutez les informations appropriées à votre configuration Nginx :
Nginx configuration | Values |
---|---|
Utilisation générale de Nginx |
|
Passager | Version 5 ou supérieure :
Anciennes versions :
|
fastcgi |
|
WSGI universel |
|
Équilibreurs de charge F5
Pour les équilibreurs de charge F5, utilisez cet configuration snippet:
when HTTP_REQUEST_SEND { # TCL 8.4 so we have to calculate the time in millisecond resolution # Calculation from: https://groups.google.com/forum/? fromgroups=#!topic/comp.lang.tcl/tV9H6TDv0t8 set secs [clock seconds] set ms [clock clicks -milliseconds] set base [expr { $secs * 1000 }] set fract [expr { $ms - $base }] if { $fract >= 1000 } { set diff [expr { $fract / 1000 }] incr secs $diff incr fract [expr { -1000 * $diff }] } set micros [format "%d%03d000" $secs $fract]
# Want this header inserted as if coming from the client clientside { HTTP::header insert X-Request-Start "t=${micros}" } }
Synchronisation du réseau
Même avec la mise en file d'attente des requêtes configurée, la configuration du serveur frontal peut toujours affecter l'heure du réseau dans vos données de navigateur. Cela est dû au fait que le serveur frontal n’ajoute pas l’en-tête de temps de mise en file d’attente avant d’avoir réellement accepté et traité la demande.
Les en-têtes de temps de mise en file d'attente ne peuvent jamais tenir compte de l'arriéré dans le socket d'écoute utilisé pour accepter requests. Par exemple, si la configuration du serveur frontal entraîne un arriéré de requests en file d'attente dans le socket d'écoute, le temps de chargement de la page affichera une augmentation du temps réseau.