API Gateway でエッジ最適化 API エンドポイントのリクエストのレイテンシーの原因を特定するにはどうすればよいですか?

最終更新日: 2021 年 11 月 4 日

クライアントが Amazon API Gateway でエッジ最適化 API にリクエストを送信するとき、レイテンシーが高くなります。レイテンシーの原因を見つけるにはどうすればよいですか?

簡単な説明

エッジ最適化 API エンドポイントのレイテンシーの原因を調べるには、接続パスの次の各部分にかかる時間を確認します。

重要:これらの接続パスのステップは、リージョン API エンドポイントではなく、エッジ最適化 API エンドポイントにのみ適用されます。エッジ最適化 API は、Amazon CloudFront ディストリビューションを通じてアクセスされます。リージョン API エンドポイントは、CloudFront 経由でアクセスされません。

  1. DNS の名前解決への接続の開始
  2. CloudFront に接続するための伝送制御プロトコル (TCP) ハンドシェイクへの接続の開始
  3. CloudFront に接続するための Secure Sockets Layer (SSL) ハンドシェイクへの接続の開始
  4. CloudFront にクライアントの HTTP リクエストを送信する接続の開始
  5. CloudFront から転送される最初のバイトへの接続の開始
  6. リクエストと API への応答の合計時間
  7. API Gateway がリクエストを処理して CloudFront エッジロケーションに応答する時間
  8. API Gateway からの HTTP リクエストに統合エンドポイントが応答するまでの時間
  9. API Gateway が CloudFront エッジロケーションに応答し、CloudFront がクライアントに応答するまでの時間

接続パスのうち、時間が最も長くかかっている部分が、レイテンシーの原因です。

注: AWS X-Ray を使用して、Amazon API Gateway REST API を経由して基盤となるサービスに移動するユーザーリクエストをトレースおよび分析できます。API Gateway は、X-Ray が利用可能な AWS リージョンのすべてのAPI Gateway REST API エンドポイントタイプのために X-Ray トレーシングをサポートします。X-Ray が利用可能なすべてのリージョンを確認するには、AWS リージョン表を参照してください。

解決方法

curl_for_latency Bash スクリプトを実行する

API の接続パスプロセスのステップ 1~6 の所要時間を確認するには、GitHub で curl_for_latency Bash スクリプトを実行します。

重要: [URL]、[HTTP method] (HTTP メソッド)、および [parameters] (パラメータ) の値を、API の情報と一致するように置き換えてください。

このスクリプトは、API が次の接続パスのステップを完了するのにかかる時間を返します。

  1. DNS 名前解決への接続の開始 (「time_namelookup」)
  2. CloudFront に接続するための TCP ハンドシェイクへの接続の開始 (「time_connect」)
  3. CloudFront に接続するための SSL ハンドシェイクへの接続の開始 (「time_appconnect」)
  4. CloudFront にクライアントの HTTP リクエストを送信する接続の開始 (「time_pretransfer」)
  5. CloudFront から転送される最初のバイトへの接続の開始 (「time_starttransfer」)
  6. リクエストと API への応答の合計時間 (「time_total」)

API Gateway がリクエストを処理して CloudFront エッジロケーションに応答するのにかかる時間を確認する

CloudWatch コンソールで API の Latency メトリクスを確認します。その後、[1-minute interval] (1 分間隔) と [Maximum] (最大) の Latency メトリクスグラフ設定を構成して、1 分間の時間範囲内で最長の処理時間を確認します。

手順については、CloudWatch コンソールで API Gateway のメトリクスを表示するを参照してください。

API Gateway からの HTTP リクエストに統合エンドポイントが応答するまでの時間を確認する

CloudWatch コンソールIntegrationLatency メトリクスを確認します。その後、[1-minute interval] (1 分間隔) と [Maximum] (最大) の IntegrationLatency グラフ設定を構成して、1 分間の時間範囲内で最長の処理時間を確認します。

- または -

API で CloudWatch ログ記録がアクティブ化されている場合は、次のような行項目のログを確認します。

Received response. Integration latency: 325 ms

重要: API Gateway で AWS Lambda を使用していて、IntegrationLatency メトリクスが高い場合は、Lambda 関数の CloudWatch Logs も確認してください。Lambda 関数のコールドスタートは関数の継続時間メトリクスには記録されないため、API の統合レイテンシーが関数の継続時間より長くなる可能性があります。コールドスタートのある関数の実行時間を確認するには、AWS X-Ray を使用します。

API Gateway が CloudFront エッジロケーションに応答し、CloudFront がクライアントに応答するまでの時間を確認する

API へのリクエストとレスポンスの合計時間 (「time_total」) を確認し、次を減じます。

  • CloudFront にクライアントの HTTP リクエストを送信する接続の開始 (「time_pretransfer」)
  • API Gateway がリクエストを処理して CloudFront エッジロケーションに応答する時間 (API の Latency メトリクス)

これで、API Gateway が CloudFront エッジロケーションに応答し、CloudFront がクライアントに応答するまでの時間を確認できます。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?