リクエストのキューイング は、リクエストがアプリケーション(エージェントが存在する場所)に到達する前に発生します。このため、この機能を利用するには、エージェントと本番ホストの簡単な設定を行う必要があります。
HTTPヘッダー
リクエストのキューイングを報告するために、ほとんどのNew Relicエージェントは、フロントエンドのWeb サーバー (ApacheやNginxなど)やロードバランサー(HAProxyやF5など)が設定するHTTPヘッダーに依存しています。これらのフロントエンドサーバーを設定して、リクエストが最初に本番インフラに入った時を表すタイムスタンプをHTTPヘッダーに設定することができます。
ヒント
このヘッダーは、リクエストがインフラに入ってからできるだけ早く設定することで、ヘッダーが設定される前に発生したインフラのパフォーマンス問題を見逃す可能性が低くなります。
ほとんどの New Relic エージェントは、 X-Queue-Start
またはX-Request-Start
ヘッダーを解釈し、それを使用してリクエスト キューイングを計算します。エージェントは、これらのヘッダーを同じように扱います。t=MICROSECONDS_SINCE_EPOCH
の形式で値を含めます。ここで、 MICROSECONDS_SINCE_EPOCH
Unix エポック (たとえば、1970 年 1 月 1 日) の開始から経過したマイクロ秒数の整数値です。
ほとんどのフロントエンドのHTTPサーバーやロードバランサーは、このヘッダーを追加するように設定できます。その他の詳細は、特定のエージェントとサーバーの構成に依存します。詳細については、 リクエストキューの設定例 をご覧ください。
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 環境辞書に自動的に挿入します。 これにより、Apache が最初にリクエストを受け入れた特定の時点がマークされます。mod_wsgi によって設定された値は、個別のX-Request-Start
またはX-Queue-Start
ヘッダーが Web サーバーのフロント エンドまたは Apache 自体に手動で構成されていない場合、Python エージェントによって取得されて使用されます。
.NETエージェント
.NET エージェントは、キュー時間を計算するために HTTP ヘッダーの構成を必要としません (無視します)。これは、IIS キューイング メカニズムを直接計測することで機能し、 HttpContext
コンストラクターが実行されたときとHttpApplication.BeginRequest
イベントが発生したときの差としてキュー時間を報告します。
要求キュー時間は、IISでホストされている.NET Frameworkアプリケーション(例:ASP.NETアプリケーション)についてのみ報告されます。 ASP .NET Coreアプリケーション(.NET CoreまたはFrameworkを対象とする)や、自己ホスト型のOWINアプリケーションについては報告されません。
PHPエージェント
PHP エージェントはX-Request-Start
ヘッダーのみをサポートしています。これは、マイクロ秒単位のタイムスタンプを整数として識別し、ヘッダー値にオプションのt=
を付けます。ヘッダーが正しく読み取られていることを確認するには、 PHP 変数 セクションの下にあるphpinfo()
を調べて、 _SERVER["HTTP_X_REQUEST_START"]
存在し、期待される形式であることを確認してください。
Nginx を使用している場合は、 リクエストキューサーバーの設定例 を参照して、ヘッダーの設定についての詳細を確認してください。