Pocket

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

参考
https://dev.classmethod.jp/cloud/aws/t2-unlimited-is-available/

Pocket

カテゴリー: AWS

adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください