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

エッジ最適化 API のレイテンシーの原因を見つけるには、接続パスの各部 (以下のそれぞれのステップ) にかかる時間を確認します。

重要: 以下のステップはエッジ最適化 API には適用されますが、リージョン API には適用されません。エッジ最適化 API は、Amazon CloudFront ディストリビューション経由でアクセスされるため、接続パスには CloudFront のステップが含まれます。

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

レイテンシーに curl を使用

このプロセスにおける複数のステップにかかる時間を求めるには、アマゾン ウェブ サービス - Labs GitHub ウェブサイトで curl_for_latency スクリプトを使用します。

注意: API の詳細と一致するように、URL、HTTP メソッド、およびパラメータを更新します。

スクリプトがこれらのステップの時間を返します。

  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 エッジロケーションに応答する時間を確認する

API Gateway がリクエストを処理し、CloudFront エッジロケーションに応答するためにかかる時間を取得するには、Amazon CloudWatch コンソールを使用して API Gateway からレイテンシーメトリクスを表示します。このメトリクスには、一定の時間枠内のステージに対するすべてのリクエストの集約ビューが表示されます。

CloudWatch コンソールで、1 分間隔最大のレイテンシーメトリクスグラフを設定して、1 分間の時間枠内で最長の処理時間を確認します。

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

統合エンドポイントが、API Gateway からの HTTP リクエストに応答するためにかかる時間を取得するには、CloudWatch コンソールを使用して IntegrationLatency メトリクスを表示します。このメトリクスは、統合リクエストエンドポイントに対するすべてのリクエストの集約ビューとエンドポイントが、API Gateway からのリクエストに応答するためにかかる時間を表示します。1 分間隔最大の IntegrationLatency メトリクスグラフを設定します。

また、CloudWatch Logs を有効にしている場合、次と類似した情報を含む行項目の CloudWatch Logs を確認することもできます。

Received response. Integration latency: 325 ms

注意: AWS Lambda を使用していて、統合レイテンシーのメトリクスが高い場合、Lambda 関数の CloudWatch Logs を確認して、関数の時間の増加をトラブルシューティングします。Lambda 関数でのコールドスタートは関数の実行時間メトリクスに記録されないため、統合レイテンシーが関数の実行時間より長いことがわかります。コールドスタートのある関数の実行時間を確認するには、AWS X-Ray を使用します。

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

CloudFront エッジロケーションに応答する API Gateway とクライアントに応答する CloudFront の間の時間を取得するには、以下の手順に従います。

  1. 「リクエストと API への応答の合計時間」を取得します。
  2. 「CloudFront にクライアントの HTTP リクエストを送信する接続の開始」時間を引きます。
  3. 「リクエストを処理し CloudFront エッジロケーションに応答する API Gateway」の時間を引きます。
  4. その結果が、CloudFront エッジロケーションに応答する API Gateway とクライアントに応答する CloudFront の間の時間になります。

このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2018 年 12 月 12 日