요청 대기열을보고하기 위해 New Relic 에이전트는 프런트엔드 웹 서버(예: Apache 또는 Nginx) 또는 로드 밸런서(예: HAProxy 또는 F5)에서 설정한 HTTP 헤더에 의존합니다. 이 예에서는 여러 플랫폼에서 더 광범위하게 지원되므로 X-Request-Start
헤더를 사용합니다.
이것이 요청 대기열에 대한 서버 구성에서 작동하지 않으면 X-Queue-Start
헤더를 사용해 보십시오. 그렇지 않으면 구문이 동일해야 합니다.
아파치
Apache의 mod_headers 모듈에는 올바른 형식의 %t
변수가 포함되어 있습니다. 요청 대기열 보고를 활성화하려면 다음 코드를 Apache 구성에 추가하세요.
RequestHeader set X-Request-Start "%t"
Nginx
Nginx 버전 1.2.6 이상과 최신 버전의 Ruby, Python 또는 PHP 에이전트를 사용하는 경우 대기열 시간을 보고하도록 Nginx를 쉽게 구성할 수 있습니다. (Nginx 버전 1.2.6 이하의 경우 모듈이나 패치로 Nginx를 다시 컴파일해야 합니다.)
Nginx 1.2.6 이상으로 구성하는 경우 ${msec}
변수를 사용합니다. 이 변수는 밀리초 분해능의 초 단위 숫자입니다. 자세한 내용은 http://nginx.org/en/docs/http/ngx_http_core_module.html#variables 를 참조하세요.
Nginx 구성에 적절한 정보를 추가합니다.
Nginx configuration | Values |
---|---|
일반 Nginx 사용 |
|
승객 | 버전 5 이상:
이전 버전:
|
fastcgi |
|
uWSGI |
|
F5 로드 밸런서
F5 로드 밸런서의 경우 다음 구성 스니펫을 사용하십시오.
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}" } }
네트워크 타이밍
요청 대기열이 구성된 경우에도 프런트엔드 서버의 설정은 여전히 브라우저 데이터의 네트워크 시간에 영향을 미칠 수 있습니다. 이는 프런트엔드 서버가 실제로 요청을 수락하고 처리할 때까지 대기 시간 헤더를 추가하지 않기 때문입니다.
대기 시간 헤더는 요청을 수락하는 데 사용되는 수신기 소켓의 백로그를 설명할 수 없습니다. 예를 들어 프런트엔드 서버의 구성으로 인해 리스너 소켓에 대기 중인 요청의 백로그가 발생하면 페이지 로드 타이밍에서 네트워크 시간이 증가한 것으로 표시됩니다.