リクエストキューイング を報告するために、New Relic のエージェントは、フロントエンドのウェブサーバー(Apache や Nginx など)やロードバランサー(HAProxy や F5 など)が設定する HTTP ヘッダーに依存しています。これらの例では、 X-Request-Start
ヘッダを使用していますが、これはプラットフォーム間で広くサポートされているためです。
リクエストキューイングのためのサーバー構成 でこれが機能しない場合は、 X-Que-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の設定 | 価値観 |
---|---|
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}" } }
ネットワークのタイミング
リクエストキューイングが設定されていても、フロントエンドサーバーの設定によって、ブラウザのデータ のネットワークタイムに影響を与えることがあります。これは、フロントエンドサーバが、実際にリクエストを受け付けて処理するまで、キューイングタイムヘッダを追加しないためです。