昨日、さくらVPSで運営している当ブログ**「BeginningNEWS」に繋がらない**というトラブルが相次ぎました。
また、他に運営しているサイトにも同様のトラブルが起こってしまいました。
トラブル発生時の状態 とにかく、サイトに繋がりませんでした。
なんでや!と思いながらコマンドを叩くと、
・SSHでアクセスしようとしても繋がらない
・Pingは通る
ん〜、どゆこと?(´・ω・`) という事態になりました。
さくらVPSの管理画面から再起動
とりあえずサーバを再起動することで、ブログは復活しました。
しかし、しばらくすると、また表示できなくなりました。
logを見てみよう
cat /var/log/messageを見てみると、
Out of memory: Kill processでhttpsが終了されてるではありませんか!
なんでApacheが殺されてしまうん?と思ったので、調べてみると↓
・メモリが足りない…とは? – いますぐ実践! Linuxシステム管理 / Vol.035
どうやらApacheで使うメモリが多すぎて、Swapも限界まで使った結果、
プロセスを終了するしかなかったわけですね。
他の方がやられている対策
調べていくと、こちらのサイトを発見しました↓
・さくらのVPS 1GプランでWordPress運用はやっぱり厳しさが残りそう | はげあたま.org
・・・思い出した。はげあたま.orgさんの記事を見ながらも、
VPSに魅力を感じたからさくらVPSを契約したんだった(´・ω・`)
そして、さくらVPSでBeginningNEWSを運営するにあたって参考にしたのがこちらです↓
・さくらVPSで一日6万PVを処理するためにしたこと – 新卒インフラエンジニア2年目
こちらのサイトでは、さくらVPSで1日6万PVを処理する為の方法が書かれていますが、
WordPressとは書いてないんですよね。
WordPressはPHPで動いている動的なHTMLなので、ブログにアクセスがあってから、
その要求に答えてHTMLをプリントするんですよね。
となると、普通のHTMLファイルを読むよりもCPUやメモリを消費することになるので、
仮にさくらVPSで1日6万PVを処理するとなると、もっと大変な労力が必要になるわけです。
具体的にはApacheからnginxに乗り換えるとか、
Apacheならyumで入れるんじゃなくて自分でmakeするとか。
VPSだとブログ更新以上の労力が必要となってくるんです。
httpd.confの設定を見直す
今回行ったのは、http.confの見直しです。これが一番早そうだったので。
すると、設定の中で**MaxRequestsPerChildが4000**になってました! 原因はこれか!!!
そこで、上記のブログを参考にして、
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 40
MaxRequestsPerChild 500
に設定してみました。
あとは、PHPのキャッシュを作ってくれるAPCをインストールしてみました。
ちなみに、さくらVPSでAPCのインストールで失敗すると、 こちら↓のサイトが役に立ちます。
更に、APCはWP Super Cacheと相性が悪いので、
WP Super Cacheを停止して様子を見ることにしました。
あとはWordPressが少しでも軽くなるように、
WP-Optimizeプラグインでデータベースを最適化しました。
参考にしたサイトはこちら↓
・ダッシュボードから必要なときだけDB最適化→WP-Optimize — 病的溺愛シンドローム
これで一安心かな?
とりあえずこれで様子を見ます。
もしもこの設定でサイトが重たくなったり、
繋がらなくなったりするようであれば、
また次の対策を考えようと思います(`・ω・´)ゞ