New Relic 、 New Relic PHP エージェント バージョン 7.0以上で、Guzzle HTTP client library のバージョン 3、4、5、6、7 をサポートします。
Guzzle ライブラリでは、順次リクエストと並列リクエストの両方が許可されます。 このページでは、各タイプのリクエストが New Relic UI のSummaryページにどのように表示されるかについて説明します。 どの通話が最も遅かったかを確認するには、個々の外部通話のタイミングを表示する「外部サービス」ページを表示します。
連続したリクエスト
このPHPコードは、Guzzleで複数のシーケンシャルなリクエストを行います。
$client = new \GuzzleHttp\Client;$response = $client->get('http://YOUR_SITE.com/api/foo');$client->delete('http://YOUR_SITE.com/api/foo/'.$response->getBody());
このコードは、New RelicのUIに次のように表示されます。
one.newrelic.com > All capabilities > APM & services > (select an app) > Overview > Web transactions time: New Relic UI での Guzzle による連続リクエスト。
応答時間は濃い青の線で表示されます。 緑色のweb external time Guzzle ライブラリで費やされた時間を表します。 equalリクエストは順番に行われたため、応答時間は、PHP、MySQL 、および Web 外部アクティビティに費やされた 合計時間 の になります。
並列リクエスト
このPHPコードは、プロミスの配列をアンラッピングすることで、複数のリクエストを並行して行います。
$client = new \GuzzleHttp\Client;
$promises = [ $client->getAsync('http://YOUR_SITE.com/api/foo'), $client->getAsync('http://YOUR_SITE.com/api/bar'), $client->getAsync('http://YOUR_SITE.com/api/quux'),];
\GuzzleHttp\Promise\unwrap($promises);
このコードは、New RelicのUIに次のように表示されます。
one.newrelic.com > All capabilities > APM & services > (select an app) > Summary > Web transactions time: New Relic UI での Guzzle による並列リクエスト
緑色のweb external time Guzzle ライブラリで費やされた時間を表します。 リクエストは非同期で実行されたため、PHP、 、および Web 外部で費やされた 合計時間 MySQLgreaterは、レスポンス時間よりも 長くなります。
Guzzle 6 と 7 のタイミング
以前のバージョンとは異なり、Guzzle 6 および 7 はリクエストの送信時にイベントを生成しません。代わりに、エージェントはリクエスト オブジェクトの作成時にリクエストのタイミングを開始します。リクエストオブジェクトが作成され、送信前に追加の作業が行われた場合、New Relic はリクエストに実際よりも時間がかかったと報告することがあります。
ガズルのサポートを無効にする
ガズルのサポートを無効にするには
newrelic.guzzle.enabled = false
をnewrelic.ini
ファイルに追加します。- Webサーバー (Apache、Nginx、PHP-FPMなど)を再起動します。