リクエストのキューイングを報告するために、New Relic エージェントは、フロントエンド Web サーバー (Apache や Nginx など) またはロード バランサー (HAProxy や F5 など) によって設定された HTTP ヘッダーに依存します。これらの例では、 X-Request-Start
ヘッダーを使用しています。これは、プラットフォーム間でより幅広くサポートされているためです。
リクエスト キューイングのサーバー構成でこれが機能しない場合は、 X-Queue-Start
ヘッダーを使用してみてください。それ以外の場合、構文は同じである必要があります。
Apache
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の一般的な使用方法 |
|
Passenger | バージョン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}" } }
ネットワークのタイミング
リクエスト キューイングが構成されていても、フロントエンド サーバーの設定が ブラウザ データのネットワーク時間に影響を与える可能性があります。これは、フロントエンド サーバーが実際に要求を受け入れて処理するまで、キュー時間ヘッダーを追加しないためです。
待ち行列時間ヘッダーは、要求を受け入れるために使用されるリスナー ソケットのバックログを説明することはできません。たとえば、フロントエンド サーバーの構成によってリクエストのバックログがリスナー ソケットのキューに入る場合、ページの読み込みタイミングはネットワーク時間の増加を示します。