• ログイン今すぐ開始

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

リクエストキューサーバーの構成例

リクエストキューイング を報告するために、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の一般的な使用方法

proxy_set_header X-Request-Start "t=${msec}";

Passenger

バージョン5以上

>passenger_set_header X-REQUEST-START "t=${msec}";

古いバージョン

passenger_set_cgi_param X_REQUEST_START "t=${msec}";

fastcgi

fastcgi_param HTTP_X_REQUEST_START "t=${msec}";

uWSGI

uwsgi_param HTTP_X_REQUEST_START "t=${msec}";

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}"
}
}

ネットワークのタイミング

リクエストキューイングが設定されていても、フロントエンドサーバーの設定によって、ブラウザのデータ のネットワークタイムに影響を与えることがあります。これは、フロントエンドサーバが、実際にリクエストを受け付けて処理するまで、キューイングタイムヘッダを追加しないためです。

キューイングタイムヘッダは、リクエストを受け付けるためのリスナーソケットのバックログを考慮することはできません。例えば、フロントエンドサーバーの設定により、リスナーソケットにキューイングされるリクエストのバックログが発生した場合、ページロードのタイミングではネットワークタイムの増加が見られます。

Copyright © 2022 New Relic株式会社。