KUSANAGIのHHVMがたまに繋がらなくなっちゃう問題は再起動で対処

こんにちは。
幾つかのサーバをKUSANAGIで運用していますが、たまにサービスが止まってしまうことがあります。
こちらの問題の追求と対処についてです。

目次

ダウン報告

現在のところサイトはJetpackのモニタリングとHerokuで動かしているサイトダウンをSlackで通知する仕組みで監視しています。

それらの監視からちょくちょくサイトダウン報告が上がってきています。

サーバのログ確認

サーバでトラブルが起きたらまずはログの確認です。
KUSANAGIはCentOSなので/var/log/messagesを確認してみます。

$ sudo tac /var/log/messages | less

tacコマンドはcatの逆の意味で、ファイルを末尾から出力してくれています。それをページャーのlessに流しています。
FreeBSDやMacOSのDarwinなどのBSD系?の場合にはtail -rを使っています。

ダウン報告から日時をある程度特定してログを見てみるとHHVMが再起動した形跡がありました。

確かに修了した後に再起動していますね。

再起動

実はKUSANAGIのHHVMは以前から頻繁にダウンすることが確認されていて、その対処を施していました。

対処は極めて簡単でcronで二分おきに起動を確認しています。

$ sudo crontab -l

これでダウンを検知した場合には二分以内に再起動がかかります。

思っているところ

なぜKUSANAGIのHHVMがダウンするか、根本的な原因についてはわかっていません。
今回は見当たりませんでしたが、以前はLinuxのOOM-Killerが走っていることが確認されました。

今回のログからもメモリ関連のトラブルであることは間違いないと思いますが、なんとも言えません。
メモリが足りないのかなと思って多めに取っているサーバ(16GBほど)もありますが、落ちてしまいます。
ただ落ちるサイト、落ちないサイトにはばらつきがあり、特定のサイトでは頻繁に落ちています。
アクセス数は多いところ、少ないところでそれぞれ発生しているのでそれほど関係なさそうです。
PHP-FPMに変えると落ちません。

WordPressのプラグインかテーマあたりにメモリリークのバグがあるのかな、と思っています。
とは言え落ちてもらっては困るのですが 🙂

まとめ

とりあえずHHVMを再起動しておけばなんとかなりそうでした。
ダウンしてしまいますがKUSANAGIを使っていればすごく簡単にホストを立てることができますのですごく助かっています。