Para relatar o enfileiramento de solicitações, o agente New Relic depende de um cabeçalho HTTP definido pelo servidor web frontend (como Apache ou Nginx) ou balanceador de carga (como HAProxy ou F5). Esses exemplos usam o cabeçalho X-Request-Start
, pois ele tem suporte mais amplo em toda a plataforma.
Se isso não funcionar com a configuração do servidor para enfileiramento de solicitações, tente usar o cabeçalho X-Queue-Start
. Caso contrário, a sintaxe deve ser a mesma.
Apache
O módulo mod_headers do Apache inclui uma variável %t
formatada corretamente. Para habilitar relatórios de fila de solicitações, adicione este código à configuração do Apache:
RequestHeader set X-Request-Start "%t"
Nginx
Se você estiver usando o Nginx versão 1.2.6 ou superior e a versão mais recente do Ruby, Python ou agente PHP, o Nginx pode ser facilmente configurado para relatar o tempo de fila. (Para Nginx versões 1.2.6 ou inferiores, você deve recompilar o Nginx com um módulo ou patch.)
A configuração com Nginx 1.2.6 ou superior usa a variável ${msec}
, que é um número em segundos com resolução em milissegundos. Para obter mais informações, consulte http://nginx.org/en/docs/http/ngx_http_core_module.html#variables.
Adicione as informações apropriadas à sua configuração do Nginx:
Nginx configuration | Values |
---|---|
Uso geral do Nginx |
|
Passageiro | Versão 5 ou superior:
Versões mais antigas:
|
fastcgi |
|
uWSGI |
|
Balanceadores de carga F5
Para balanceadores de carga F5, use este trecho de configuração:
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}" } }
Tempo de rede
Mesmo com o enfileiramento de solicitações configurado, a configuração do servidor frontend ainda pode afetar o tempo da rede nos seus dados do browser. Isso ocorre porque o servidor front-end não adiciona o cabeçalho do tempo de fila até que ele realmente aceite e processe a solicitação.
Os cabeçalhos de tempo de fila nunca podem levar em conta o backlog no soquete do ouvinte usado para aceitar solicitações. Por exemplo, se a configuração do servidor front-end resultar em um acúmulo de solicitações enfileiradas no soquete do ouvinte, o tempo de carregamento da página mostrará um aumento no tempo da rede.