質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

9953閲覧

EC2インスタンスがstealにCPUを専有され使い物にならない件

teresa

総合スコア7

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1グッド

0クリップ

投稿2016/03/06 03:49

タイトルはあえて煽らさせていただいています。

質問概要
EC2のインスタンスのCPU使用率が突発的にstealによって占領される問題がよく起きます。
この問題を解決する方法を教えてください。

事象
イメージ説明
ご覧のように、突然stealが跳ね上がりサービスが提供できない状態に陥ります。画像からはわからないと思いますが、一旦こうなるとほとんどのアクセスに応答しなくなります。
一旦stealが大きくなると自然回復することはなく、別のEC2インスタンスを立ち上げることでしか回復しません。

事象の再現性
・2台構成にしてアクセス数やCPUを分散させているときには一度も起きませんでしたが、1台構成にするとおよそ24時間以内に発生することが多いです。
・発生するタイミングは不確定です。
・microインスタンスでも、smallインスタンスでも生じました。
・CPUやアクセス数が小さいほど起きにくい傾向があります。

このため、AWSがうたっているEC2のスペックを事実上使うことができません。
実際に、今はsmallインスタンスを使っていますが、CPUを約20%以下に抑えなければ安定した運用ができません。しかしこれでは当初見積もっていたコストで運用することができません。
この問題が解決できなければEC2をやめて、さくらVPSもしくはLambdaへの移行を考えています。

すでに行った対策1
ぐぐってみると、使っているEC2インスタンスのハードウェアがたまたまイケてないことがあるらしく、EC2インスタンスの停止・起動をすれば直ることがあるとのことでした。
確かにその方法で直ることはあるのですが、問題なのは突然stealのCPU専有が始まりサービスが落ちることですので、起きてからの対応では遅いのです。

すでに行った対策2
アクセスが詰まっているのだとしたら、詰まりにくくしてやればよいのではないかと思い、スレッドプールの設定を以下のようにmaxを大きめに設定しました。
http-thread-pool:max 100, min 20
thread-pool-1:max 200, min 5
しかし問題の起きやすさに変化はありませんでした。

参考資料 サービスの構成
AWSロードバランサー

Web Server (Apache)(1 server)

Application Server (Glassfish)(1 server)

参考資料 その他
アクセス量は15 requests / sec ほどで、APIサーバとして使っています。
1回のアクセスにつき、DynamoDBに対して3回のRead処理を行っていますが、その他特に重い処理は行っていません。


どのあたりに問題がありそうでしょうか?

ikuwow👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

インスタンスタイプはt2のsmallやmicroでしょうか?t2インスタンスは基本的に、「いつもは低負荷だが瞬間的に高負荷になる時がある」ような使い方に適しています。ブラウザコンソールでインスタンスを選択し「モニタリング」タブを見るとCPUクレジットという欄があり、一定以上CPUを使用しているとそのクレジットが減少して聞きます(時間がたつと回復します)。

おそらく暫く使うとstealが増えて使用率が上がらなくなるのは、このクレジットが0になったからだと思われます。stealは仮想化基盤の上でゲストOSがCPUリソースを割り当てられなかったときにでるものなので、この理由だと説明がつくかなと思います。

一度CPUクレジットを見てみることをおすすめします。
もし上のような現象が起こっていたとすれば、CPU使用率を下げてクレジットの消費を減らすか、キャパの大きいt2.medium, t2.largeなどに変えるか、そもそも定常的に100%が利用できるm4インスタンスを使用する、などが考えられます。

(実際に観測したり測定したわけでなくある程度憶測が入っているので参考程度に)

参考

投稿2017/01/18 05:20

ikuwow

総合スコア462

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

CPUの使用率を制限すると良いらしいです。
http://extrea.hatenablog.com/entry/2013/04/28/154234

投稿2016/03/06 03:57

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teresa

2016/03/06 04:01

おお! 素早い回答ありがとうございます! さっそく、教えていただいたブロク記事の方法を試してみます。 結果がでるまで時間のかかる問題ですので、結果の報告は数日後になるかと思います。
退会済みユーザー

退会済みユーザー

2016/03/06 04:08

ちらりとAWSの利用が割に合わないことも、聞いたことがあります。 EC2は、まともに動作し続けることを前提と出来ない旨の注意も有ります。 複数台のロードバランスを前提に使えということでしょうね
teresa

2016/03/06 04:51

公式ページにも20%以下の利用が基本で、それ以上の利用は一時的な利用が想定されているようですね。。 https://aws.amazon.com/jp/ec2/instance-types/ >バースト可能パフォーマンスインスタンス EC2のもともとの仕様だったということがわかり、自分の調査不足を悔やんでいます。 はじめからこのことを知っていれば、他の選択肢を選んでいたと思いますが、今となってはサービスがDynamoDBに依存しているのでそれも難しいです。 しかしながら、サービスの内容が単純にDynamoDBの値をとってくるだけの単純なAPIで、Lambda + API Gatewayへの移行も難しくなさそうなので、長期的解決策としてはLambdaへの移行を検討します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問