AWSを使っているみなさん!T2インスタンスファミリーをお使いになられている方はご存知でしょう。
上記のように運用していると急激にLoad Averageが上がり、sshもできず、CPU idle,stealもぱないし死亡。まるでカーネルパニック的な現象になり、原因はAWSのせいだ!!!!と判断してしまう人も多いと思います!本日はT2インスタンスの罠についてブログします。
■CPU Credits
https://www.slideshare.net/aws-ninja/understanding-amazon-aws-ec2-t2-instance-type-cpu-credits
T2インスタンスの特徴としてCPUクレジットという概念があります。インスタンスサイズに応じて初期CPUクレジットを持ち、アイドル状態のときにCPUクレジットを貯め、定められたベースラインを超えてのCPU性能を発揮させたい時はCPUクレジットを消費するという仕組みがあります。これを「バースト」と言います。
ちなみに公式には
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/t2-instances.html#t2-instances-cpu-credits
CPU クレジット 1 CPU クレジットは、1 CPU コア全体の 1 分間のパフォーマンスを表します。従来の Amazon EC2 インスタンスタイプはパフォーマンスが一定ですが、T2 インスタンスはベースラインレベルの CPU パフォーマンスを提供しながら、そのベースラインレベルを超えてバーストする機能を備えています。ベースラインパフォーマンスとバースト機能は、CPU クレジットにより管理されます。
と書いていますね。wつまり原因としては
「CPUクレジット残高が0になったからインスタンスがお亡くなりになった」
というのが正しいのです。
■Announcement: New CPU Credit allocation policy for T2 instances
https://forums.aws.amazon.com/ann.jspa?annID=5196
去年(2017年)までCPUクレジットには24時間の有効期限がありました。さらにCPUクレジットバランスが最大値まで貯まらないことも。アップデートにより24時間での失効はなくなり、Terminate、Stopが行われるまで有効期限切れにはならなくなりました!
■新しいT2 Unlimited – バーストを超え、高い性能を発揮
https://aws.amazon.com/jp/blogs/news/new-t2-unlimited-going-beyond-the-burst-with-high-performance/
そしてre:Invent2017では「T2 無制限」(Unlimited)の設定が可能となり、バーストしたCPU性能を従量課金制(コストわからん)となったので✓しとけば上記のようなことがなくなりました!他にも負荷分散時にEC2の起動したタイミングによる、CPUクレジット残量の違いなど確認する必要がありません!
■まとめ
AWS今まで触ってたけどCPUクレジットについて詳しく知らんかった。。そういえばTerraformだと。こんな感じでいけるのか。
https://github.com/terraform-providers/terraform-provider-aws/pull/2619
1 2 3 4 5 6 |
resource "aws_instance" "..." { ... credit_specification { cpu_credits = "unlimited" } } |
参考
https://dev.classmethod.jp/cloud/aws/t2-unlimited-is-available/
0件のコメント