A4 WORKS Official BLOG

A4 WORKS オフィシャルブログ

サーバ&インフラ

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

投稿日:2016年1月5日 更新日:

昨年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

-サーバ&インフラ
-, ,

執筆者:

関連記事

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

忘れた頃につかうので、備忘録として。 更新がx日以内のファイルを見つける e.g. 更新日が5日以内のファイルを探す場合 $ find . -mtime -5 -ls -lsオプションをつけると所有者 …

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

wordpressの移行とその他動作確認してる中で足りないものがあったので、追加でセットアップ。 php-mysql お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を …

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

AWSにもCloudWathがあるんですが、いろいろな項目が簡易にみれるので、munin個人的に結構お気に入りです。 プラグインの追加 Apache,MySQLの監視項目を追加します。 # cd /e …

AmazonLinuxにGDとimageMagick(imagic)をインストールする

WordPressにEWWW Image Optimizerプラグインを導入するにあたり、GDとImageMagickをインストール。ついでにPHPにimagickも導入します。 # yum inst …

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

先日ブログに書いた通り、AWSのt1.microに限界を感じたので、t2.smallインスタンスを構築することにしました。 段取りすぐに忘れるので、備忘録的に。 t1.microはそのままメールサーバ …