ECSのCPU使用率が100%を超える事象の原因

ECSのCPU使用率が100%を超える事象の原因アイキャッチ

AWS ECSのクラスターCPU利用率(CPUUtilization)が100%を超過しました。どういう条件で発生するのか、何%まで上昇するのかを調査したのでまとめます。

目次

最初に結論 コンテナーに設定したCPUユニット数を超えてEC2が処理していた

下記2つの条件を満たすときに発生します

  • ECSに使用しているEC2のCPUリソースに余裕がある
  • サービスに割り当てられたCPUユニット数がEC2のコア数×1024より少ない

CPU利用率(CPUUtilization)は以下の計算式によって計算される。

CPUUtilization=
(サービスに属するタスクで使用されている CPU ユニット数)÷(サービスに属するタスクで予約されている CPU ユニット数)

インスタンスの処理能力に余裕がある場合は(サービスに属するタスクで予約されている CPU ユニット数)超えて処理を行うので上記の計算式が100%を超えます。


式だけではわかりにくいので例

例えばサービスに属するタスクで予約されている CPU ユニット数が1024。

マネジメントコンソールでCPUユニット数を確認する
サービスに属するタスクで予約されている CPU ユニット数

使用しているEC2がc5.large(2コア)の場合はサービスに属するタスクで使用されている CPU ユニット数は2048になります。

ECSをEC2で動かしている場合、1コア1024CPUユニットとして計算します。詳しくはこちら

CPUに余裕があると仮定して計算式に当てはめると
サービスに属するタスクで使用されている CPU ユニット数=2048
÷
サービスに属するタスクで予約されている CPU ユニット数=1024
200%となります。

事象 ECSのCPU使用率が100%を超える

ECSのCPU使用率が100%を超えます。筆者が使用していた環境では200%程度になりました。

マネジメントコンソールからECSのCPU使用率が100%を超えていることを確認する
CPU使用率200%

なお、その時の設定値は下記のとおりです。クラスター、サービス、タスク、コンテナがそれぞれ1つずつです。

・クラスター
 ・サービス
  ・タスク
   ・コンテナ:CPUユニット数1024
 ・ECSインスタンス:c5.large(2コア)

原因 コンテナーに設定したCPUユニット数を超えてEC2が処理していた

結論で述べたとおりですが、AWS公式ドキュメントを参照してもう少し見ていきます。
冒頭述べた通り、CPU利用率(CPUUtilization)は以下の計算式によって計算される。

CPUUtilization=
(サービスに属するタスクで使用されている CPU ユニット数)÷(サービスに属するタスクで予約されている CPU ユニット数)

こちらの計算式はAWS公式ドキュメントの記載から抜粋しました。

CPUUtilization

サービスの CPU 使用率 ( ClusterName と ServiceName の両方でフィルタリングされたメトリクス) は、サービスに属するタスクで使用されている CPU ユニット数を、サービスに属するタスクで予約されている CPU ユニット数で割った値です。サービスの CPU 使用率メトリクスは、Fargate と EC2 の両方の起動タイプを使用するタスクに適用されます。

有効なディメンション: ClusterNameServiceName

有効な統計: 平均、最小、最大、合計、サンプル数。最も有用な統計は Average です。

単位: パーセント。

Amazon ECS CloudWatch メトリクス

インスタンスの処理能力に余裕がある場合はサービスに属するタスクで予約されている CPU ユニット数超えて処理を行うことを確認しました。AWS公式ドキュメントにもその旨の説明が記載されていました。

このタスクが一定期間中に CPU 負荷の高い作業を実行し、使用可能な 2,048 CPU ユニットすべてと 512 MiB のメモリを使用している場合、サービスからは CPU 使用率 400%、メモリ使用率 50% としてレポートされます。タスクがアイドル状態で 128 CPU ユニットおよび 128 MiB のメモリを使用している場合、サービスからは CPU 使用率 25%、メモリ使用率 12.5% としてレポートされます。

サービス使用率

コンテナ画面から設定するCPUユニット数はソフトリミットなので超えて処理をすることもあるということですね。

マネジメントコンソールからコンテナのCPUユニット数を確認する
コンテナからのCPUユニット数の設定

PR
当ブログはWordPressテーマSWELLを使用しています。非常に使いやすく、簡単にプロのようなデザインを使えるのでお勧めです!!

SWELL – シンプル美と機能性両立を両立させた、圧巻のWordPressテーマ

ランキング

ランキングに参加しています。クリックして応援いただけると嬉しいです。
にほんブログ村 IT技術ブログ クラウドコンピューティングへ
にほんブログ村
AWSランキング
AWSランキング

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次