スキップしてコンテンツを表示

ECS で応答時間が長い場合のトラブルシューティング方法を教えてください。

所要時間1分
0

Amazon Elastic Container Service (Amazon ECS) のタスクで、応答時間が長く、遅延が増加しているため、トラブルシューティングしたいです。

解決策

Amazon ECS のサービスレベルメトリクスを確認する

CPU とメモリの使用率が高い場合、Amazon ECS タスクからの応答遅延が長くなる可能性があります。Amazon CloudWatch メトリクスを使用してサービスレベルの CPU とメモリの使用率を確認します。CloudWatch Container Insights が有効化済みの場合は、コンテナレベルの CPU とメモリの使用率を確認します。Container Insights を有効にしていない場合は、「CloudWatch Container Insights を設定し、Amazon ECS タスクとコンテナインスタンスを監視する方法を教えてください」を参照してください。

アプリケーションのコンテナが CPU を大量に消費するワークロードを実行する必要がある場合は、より多くの仮想 CPU (vCPU) とメモリを持つ、より大きいタスクサイズにアップグレードしてください。または、Application Auto Scaling を有効にします。

Amazon EC2 起動タイプの Amazon ECS タスク

Amazon EC2 起動タイプを使用する Amazon Elastic Cloud Compute (Amazon EC2) タスクにおける、Amazon ECS インスタンスの CPU とメモリの使用率を確認します。

CloudWatch メトリクスを使用して Amazon EC2 インスタンスのネットワークパフォーマンスを監視します。インスタンスのネットワーク帯域幅使用可能なインスタンスのベースライン帯域幅を超えている場合は、高いベースライン帯域幅を持つ、より大きいインスタンスタイプを使用してください。

CloudWatch メトリクス CPUUlization を参照し、インスタンスの CPU 使用率を監視します。さらに、インスタンスにログインしてメモリ使用率を確認します。CPU またはメモリの使用率が高い場合は、クラスターにインスタンスを追加して、複数のインスタンスにタスクを分散します。または、インスタンスをより大きいインスタンスタイプに変更します。

アプリケーションログを参照し、ダウンストリームサービスからの応答遅延が長くなっているかどうかを判断します。遅延の問題をトラブルシューティングするには、AWS X-Ray を有効化するのがベストプラクティスです。

応答遅延を測定する

Amazon ECS サービスが Application Load Balancer の後ろにある場合は、CloudWatch メトリクス TargetResponseTime を使用して応答時間を測定します。このメトリクスは、Application Load Balancer 経由でルーティングされるリクエストの平均応答時間を示します。値が高い場合は、バックエンドアプリケーションまたはインフラストラクチャに遅延が発生している可能性があります。

応答遅延をコンテナから直接測定するには、アプリケーションコンテナにログインします。Amazon EC2 起動タイプのタスクでは、Docker exec コマンド -it container id を実行し、コンテナにログインします。Fargate 起動タイプを使用するタスクでは、ECS exec を使用してコンテナにログインします。

次に、以下のコマンドを実行して応答遅延を測定します。

curl -kso /dev/null -w "\n===============\n
| Connect: %{time_connect}\n
| App connect: %{time_appconnect}\n
| Pre-transfer: %{time_pretransfer}\n
| Time to First Byte (TTFB): %{time_starttransfer}\n
| Total: %{time_total}\n
| HTTP Code: %{http_code}\n===============\n" http://localhost:port/endpoint

注: 実際のものでそれぞれ、port をコンテナのポートに、endpoint をエンドポイントに置き換えます。

上記のコマンドの出力では、最初のバイトが到着するまでにかかる時間が Time to First Byte (TTFB) フィールドに表示されます。出力にはサーバーの処理時間も含まれます。処理時間が長い場合は、アプリケーションがリクエストを処理するのに時間がかかっています。

関連情報

AWS Fargate で Amazon ECS タスクの CPU 使用率が高い場合のトラブルシューティング方法を教えてください

Fargate での、Amazon ECS タスクのメモリ使用率増加を監視する方法を教えてください

EC2 インスタンスのネットワーク使用量の合計を計算し、特定の日付範囲内で最も多くの帯域幅を使用したインスタンスを特定する方法を教えてください

AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ