A4 WORKS Official BLOG

A4 WORKS オフィシャルブログ

AWSでCPU stealが発生して激重になる

   

昨年11月末に、初のゲームタイトルとなるソーシャルゲーム「AFRER FIRE Re」をリリースし、運用するなかでの気づきを備忘録も兼ねて。

急激なロードアベレージの上昇と謎のstealなる値

イベント終了の3時間後に新イベントを開始。イベント開始の後しばらくすると、CPU使用率が100%あたりまで上昇するもゲーム自体は快適にプレイできており、まったく問題なし。
しばらくの後、運営チームからゲームが重いし、エラーが出始めると報告をうけ、状況を確認すると、ロードアベレージが急激に高くなり、なぞのstealなる値もあわせて急激に増加。。。

load_averagecpu-steal

stealってなに?

ざっくり言うと「CPUリソースを割り当ててもらえなかった時間の割合」との事。つまり、処理をしたいのに出来ていない状態が発生しているという状況。

t2.mediumを使っているので、vCPUは2コア。まだ余力があるはずと思っていましたが、T2インスタンスについて大きな思い違いがありました。

詳細は割愛しますが、要するに「CPU負荷が高い状態を長くは続けられない」インスタンスタイプで、ある程度のCPU使用率を超えると、CPUクレジットを消費し、使い切った場合には最低限(t2.mediumは2CPU合計で40%)のパフォーマンスしか提供しないと。

T2インスタンスの詳細について
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/t2-instances.html

Cloud Watchのグラフをみると、確かに説明の通りで、CPU使用率が一定値を超えるとクレジットが消化されていき、残ゼロになったタイミングで制限が掛かっています。

aws_graph

対処方法

サーバー(インスタンス)を再起動する

インスタンスを再起動する事で、起動時のクレジット付与が発生し、一時的ではありますが状況が改善します。

インスタンスを増やす(スケールアウト)

台数が増えるという事は、当然ながら面倒を見なければならない事や場所が増えるので、何らかの際に手間が増えるのが難点です。

インスタンスタイプを上位に変更する(スケールアップ)

初期CPUクレジットが多く、時間当たりに付与されるCPUクレジットも多いので台数を増やすよりは安易に実行しやすいです。

CPUクレジット方式ではない(T2以外の)インスタンスに変更する

ある意味スケールアップではありますが、定常的に負荷がかかる様な場合で、コストの兼ね合いがとれればこちらの方が確実ではあります。

参考サイト

http://d.hatena.ne.jp/mir/20080407/p1
http://open-groove.net/jmeter/cpu-utilization-monitor/

おまけ

ソーシャルゲーム「AFTER FIRE Re」

チューニングカーやレースがお好きな方であれば、楽しんでいただけるタイトルですので、ぜひプレイしてみてください!

mobage版

http://g12023700.sp.pf.mbga.jp/

GREE版

http://apps.gree.net/66216

 - サーバ&インフラ , ,

STINGERレクタングル大

STINGERレクタングル大

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  関連記事

AWS_icon
インフラ構築(AWS):Apache,PHP編

Apacheインフラ構築(AWS):MySQL編につづきApache,PHP編で …

php_icon
php.iniのtimezone設定

ただの設定忘れなんですが、こんな感じでエラーが出たのでその対応。 [crayon …

AWS_icon
インフラ構築(AWS):PHP編その2

wordpressの移行とその他動作確認してる中で足りないものがあったので、追加 …

terminal_icon
最近更新されたファイルを探す(Linux findコマンド)

忘れた頃につかうので、備忘録として。 更新がx日以内のファイルを見つける e.g …

Apache
Apache2.4系でのアクセス制限

apacheでアクセス元IPアドレスでアクセス制限を掛ける場合に2.2系と2,. …

logo-mysql-110x57
automysqlbackupでMySQLのバックアップ

見ていただいたらわかる通りこのBlogはWordPressで運用してるんですが、 …

AWS_icon
インフラ構築(AWS):munin編

AWSにもCloudWathがあるんですが、いろいろな項目が簡易にみれるので、m …

AWS_icon
AWS t1.micro

このブログはAWSで運営してるんですが、コーポレートサイトも相乗りしてるわけです …

Apache
Apacheで403エラーの際にTestPageを表示しないように設定

最終的には専用のエラーページを作るのですが、とりあえずアクセス制限の際に、403 …

AWS_icon
AWSでサーバー構築(t2.small)

先日ブログに書いた通り、AWSのt1.microに限界を感じたので、t2.sma …