LoginSignup
4
3

More than 3 years have passed since last update.

EC2の処理が突然遅くなったときはCPUクレジットを確認しよう

Posted at

はじめに

EC2のインスタンス上で画像処理をする機能を社内用に提供していました。
ところが、変換するのに通常より時間がかかってくるとの声が上がってきました。
しかも、午前中は大丈夫だが、午後になると遅くなって使い物にならなくなるとのこと。

調査してみると、CPUクレジットが枯渇していることが原因となっているようでした。
CPUクレジットとは何か、なぜ午後に遅くなってしまったのかをまとめます。

まずは調査

まずはともあれEC2のモニタリングを確認です。

CPUクレジット残高を見てみると、遅いと言われている時間に0になっていることがわかりました。
その前にCPUクレジットとは何なのでしょうか。

CPUクレジットとは

ここで一旦インスタンスタイプを確認します。今回使用していたインスタンスタイプはt2.microでした。
12か月間の無料利用枠の対象にもなっているので、とりあえず選択する方も多いのではないでしょうか。
T2, T3, T3aインスタンスはバースト可能パフォーマンスインスタンスに分類されます

バースト可能パフォーマンスインスタンスとは

バースト可能パフォーマンスインスタンスには、ベースラインがインスタンスタイプ毎に設定されています。
例えば、t2.microではvCPUは1で、ベースラインは10%になります。

普段はベースラインでのパフォーマンスを提供するが、必要なときにはベースラインを超えて提供してもらえます。
ここでベースラインを超えて提供してもらえる時間を管理しているのが、CPUクレジットになります。
CPU100%で1分間処理するには、CPUクレジットを1払う必要があります。

CPUクレジットは基本的には時間経過によって貯まります。(T2シリーズのみ起動時にも付与されます)
t2.microの場合、1時間あたりに6貯まり、最大144まで貯めることが出来ます。

つまりCPUクレジットとは名前の通り本当にお金のようなもので、
ベースラインの10%を超えてCPUを使いたいときは、CPUクレジットを払ってCPUのパフォーマンスを高められます。
しかし、CPUクレジットの残高がなくなってしまった場合は、ベースラインでの動作になります。

今回の私のケースでは、ユーザーが使用しない深夜のうちにCPUクレジットが144の最大まで溜まっていたが、
業務時間になると徐々にCPUクレジットを消費し、午後にはCPUクレジットの残高が0になってしまいました。
CPUクレジットの残高が0になったことで、CPUがベースラインの10%でしか動作しなくなってしまったため、
処理が極端に遅くなってしまったということになります。

インスタンスサイズの違い

上記の例はt2.microの例でしたが、1時間あたりに受け取れるCPUクレジットの数などは、インスタンスサイズによって異なります。

インスタンスタイプ 1時間あたりに受け取るCPUクレジット 蓄積可能な最大獲得クレジット ベースライン 料金(東京リージョン)
t2.nano 3 72 5% 0.0076USD/時間
t2.micro 6 144 10% 0.0152USD/時間
t2.small 12 288 20% 0.0304USD/時間

1時間あたりに受け取るCPUクレジットが2倍になると、価格も2倍になるとことがわかります。
サイズが大きくなるとベースラインも上がっているので、その分はお得というイメージでしょうか。

その他詳しくはこちらをご覧ください。
バースト可能パフォーマンスインスタンスの CPU クレジットおよびベースラインパフォーマンス

おわりに

今回はt3.smallにすることで対応をしました。その後は遅いとの報告も上がらず順調です。
T2, T3, T3aの違いも書こうかと思ったのですが、CPUクレジットと話が逸れるのでまた機会があれば。
(無料利用枠を使いたい場合以外は、基本的にはT3 or T3aを使ったほうが良いかと思います)

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3