サイドカープロキシがワークロードに挿入された後、サイドカープロキシは指定されたポリシーに基づいてトラフィックをインターセプトしてルーティングします。 サイドカープロキシは、トラフィックの処理と転送に時間が必要です。 これは、要求に対する応答を遅らせる。 しかし、この遅延は、ノード性能がロバストである場合、同時処理にとっては重要ではない。 このトピックでは、アクセスログを使用してレスポンスレイテンシが高い原因を特定する方法について説明します。
ステップ1: リクエストパスで高レイテンシの原因となるコンポーネントを見つける
アクセスログのdurationフィールドをチェックして、データプレーン上のコンポーネントが消費した期間を取得します。 この期間中、コンポーネントは、要求を読み取って上流側サービスに転送し、上流側サービスが応答を返すのを待ち、次いで、応答を読み取って下流側ノードに転送する。
この期間が予期しない場合は、リクエストパスの次のアップストリームコンポーネントを確認してください。 次のアップストリームコンポーネントによって引き起こされるレイテンシが予想される場合、データプレーン上の現在のコンポーネントは、高いレイテンシを引き起こす。 次の上流コンポーネントによって引き起こされるレイテンシが予期しない場合は、高いレイテンシの原因となるコンポーネントが見つかるまで上流コンポーネントのチェックを続けます。
ステップ2: コンポーネントが高レイテンシを引き起こす理由を確認する
高いレイテンシの理由は、遅延ネットワーク伝送および遅いアップストリーム処理を含む。 アクセスログの関連フィールドを確認することで、理由を確認できます。
遅延ネットワーク伝送
アクセスログのrequest_durationおよびrequest_tx_durationフィールドを表示します。
request_durationフィールドの値が予想よりも大きい場合、データプレーン上のコンポーネントがダウンストリームノードからリクエストを読み取るのに時間がかかります。 データプレーン上のコンポーネントは、サイドカープロキシまたはゲートウェイのいずれかです。
request_tx_durationフィールドの値が予想よりも大きい場合、コンポーネントはリクエストを上流サービスに転送するのに長い時間がかかります。
ボディを持つHTTPリクエストの場合、ボディは、読み取られた後に送信されるのではなく、同時に読み取られて上流サービスに送信されます。 したがって、長いrequest_durationは、長いrequest_tx_durationにつながり得る。
request_tx_durationだけが長い場合、リクエストは高速に読み取られますが、上流サービスにはゆっくりと送信されます。
request_durationとresponse_tx_durationの両方が長い場合、応答は上流サービスからゆっくりと読み取られるか、下流ノードにゆっくりと転送されます。
遅い上流の処理
アクセスログのresponse_durationフィールドは、リクエストが開始された時刻からレスポンスの最初のバイトが受信される時刻までの期間を示します。
response_durationとrequest_tx_durationの値の差は、アップストリームサービスがリクエストを処理するために消費した時間を示します。 2つの値の差が大きい場合、アップストリームサービスの処理速度が遅いか、アップストリームネットワークの遅延が大きくなります。