2011年3月30日水曜日

Amazon EC2 のインスタンスに接続不可

Amazon EC2で公開していたWebサイトが見れなくなりました。

http → タイムアウト
ssh → 認証の途中から進まない
ping → 正常

AWS ConsoleのCloudWatchから見ると、CPUが100%近くに達していました。

AWS Consoleから、EC2 Instance をStop→Startして復旧しました。
(Rebootでは復旧しませんでした。)

Stop/Startすると、Elastic IPが外れるので、Elastic IPsから Associate Addressしておきましょう。

念の為、CloudWatch に CPU Alerm を設定しておきました。



  • 追記

再度、同じ現象に陥ったため、復旧後ログを見たところ、OOM Killerによる障害だと分かりました。

ログの確認方法
$ sudo less /var/log/messages
以下の設定を入れて様子を見ることにしました。
$sudo sysctl -w vm.overcommit_ratio=99
$sudo sysctl -w vm.overcommit_memory=2
/proc/sys/vm/overcommit_ratio で確保できる物理メモリの割合を指定し、
/proc/sys/vm/overcommit_memory を 2 にするとメモリオーバーコミットを許さなくなります。
overcommit_ratio のデフォルト値は 50 だそうなので、メモリが 613MB しかない、AWS micro Instance ではこの設定は必須ではないでしょうか。


  • 追記

さらに、apache,phpの設定も見直しました。

php.ini
memory_limit を大きく設定していたので、16Mまで下げました。

httpd.conf
StartServers 2
MinSpareServers 2
MaxSpareServers 4
MaxClients 50
MaxRequestsPerChild 0
MaxClients × memory_limit = 消費メモリーとなると思われるので、
これでもmicroInstanceには厳しいかもしれません。
とりあえず、これで様子を見ることにしました。

0 件のコメント:

コメントを投稿