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には厳しいかもしれません。
とりあえず、これで様子を見ることにしました。