リクエストのキューイング は、リクエストがアプリケーション(エージェントが存在する場所)に到達する前に発生します。このため、この機能を利用するには、エージェントと本番ホストの簡単な設定を行う必要があります。
HTTPヘッダー
リクエストのキューイングを報告するために、ほとんどのNew Relicエージェントは、フロントエンドのWeb サーバー (ApacheやNginxなど)やロードバランサー(HAProxyやF5など)が設定するHTTPヘッダーに依存しています。これらのフロントエンドサーバーを設定して、リクエストが最初に本番インフラに入った時を表すタイムスタンプをHTTPヘッダーに設定することができます。
ヒント
このヘッダーは、リクエストがインフラに入ってからできるだけ早く設定することで、ヘッダーが設定される前に発生したインフラのパフォーマンス問題を見逃す可能性が低くなります。
ほとんどのNew Relicエージェントは、 X-Que-Start
または X-Request-Start
ヘッダーを解釈し、Request Queuingの計算に使用します。エージェントはこれらのヘッダーを同じように扱います。 t=MICROSECONDS_SINCE_EPOCH
という形式の値を含めます。ここで MICROSECONDS_SINCE_EPOCH
は、Unix エポックの始まり(例えば、1970年1月1日)から経過したマイクロ秒の数を示す整数値です。
ほとんどのフロントエンドのHTTPサーバーやロードバランサーは、このヘッダーを追加するように設定できます。その他の詳細は、特定のエージェントとサーバーの構成に依存します。詳細については、 リクエストキューの設定例 をご覧ください。
C SDK
C SDKは、リクエストキューイングをサポートしていません。
Goエージェント
Goエージェントで、どちらかのヘッダーにメトリックを記録するように設定します。
Java、Node.js、Python、Rubyのエージェント
Java、Node.js、Python、Ruby の各エージェントの最新版では、 X-Request-Start
または X-Queue-Start
のヘッダーの形式をより柔軟に変更できるようになっています。これらのエージェントでは、タイムスタンプを秒、ミリ秒、マイクロ秒の整数値または浮動小数点値で送信することができます。また、これらのエージェントでは、ヘッダー値の先頭の t=
を省略することができます。
これらのエージェントは大きさの順序に基づいて、時間単位を秒、ミリ秒、マイクロ秒と自動的に解釈します。ミリ秒のタイムスタンプをマイクロ秒と解釈すると、40年以上の待ち行列の時間になってしまうため、New Relic は確実にこれを行うことができます。
Pythonエージェントのみ: Apache/mod_wsgi 3.4以降を使用している場合、mod_wsgiは各リクエストに対して、 X-Queue-Start
ヘッダに相当するものを自動的にWSGIのenviron辞書に挿入します。これは Apache が最初にリクエストを受け付けた特定の時点を示します。mod_wsgi が設定した値は、Web サーバのフロントエンドや Apache 自体に X-Request-Start
や X-Queue-Start
ヘッダが手動で設定されていない場合、Python エージェントが拾って使用します。
.NETエージェント
.NETエージェントは、キュータイムを計算するためにHTTPヘッダの設定を必要としません(そして、無視します)。これは、IIS-queuing メカニズムを直接計測することで動作し、 HttpContext
コンストラクタが実行されたときと、 HttpApplication.BeginRequest
イベントが発生したときの差として、キュータイムを報告します。
リクエストキューの時間は、IIS 上でホストされている .NET Framework アプリケーション(例:ASP.NET アプリケーション)についてのみ報告されます。 ****ASP .NET Core アプリケーション(.NET Core または Framework を対象とする)や、セルフホストの OWIN アプリケーションについては報告されません。
PHPエージェント
PHPエージェントは、 X-Request-Start
ヘッダのみをサポートしています。これは、マイクロ秒単位のタイムスタンプを整数で識別するもので、ヘッダの値にはオプションで t=
が含まれています。ヘッダーが正しく読み込まれていることを確認するために、 phpinfo()
の PHP Variables セクションを確認し、 _SERVER["HTTP_X_REQUEST_START"]
が存在し、期待される形式になっていることを確認してください。
Nginx を使用している場合は、 リクエストキューサーバーの設定例 を参照して、ヘッダーの設定についての詳細を確認してください。