WordPressがメモリを使い果たしてサーバが落ちてました

※記事内に商品プロモーションを含む場合があります

WordPressメモリ使いすぎ!

先週からイロイロと設定をイジっていましたが、
今日、Apacheウェブサーバーがメモリを使い果たし暴走しました。

メモリを使い果たして暴走するさくらのVPS

正確にはApacheがプロセス数を増やし過ぎた為に
メモリを使い果たしてスワップメモリを使い始めた事による
パフォーマンスの低下です。

パフォーマンスの低下と言ってもロードアベレージは70近いので
ほぼ機能していません。

今週、サーバ監視にZABBIXをインストールしたので
負荷上昇時のグラフを見てみましょう。

負荷上昇時グラフ

まずはロードアベレージ

サーバ負荷上昇時のロードアベレージ

7時3分頃より負荷が上昇し5分のロードアベレージが急上昇。

他の値も追随して上昇しています。

次はプロセス数とスワップ空き容量の割合

サーバ負荷上昇時のプロセス数とスワップ空き容量の割合

緑の線がプロセス数、
赤の線がスワップ空き容量の割合、パーセンテージです。

7時3分を境にスワップ空き容量の割合が下がっています。
その前からプロセス数が増えています。

サーバ負荷が高いので所々、飛んでいる所があります。

最後に空きメモリ。

サーバ負荷上昇時の空きメモリ

7時3分を境に空きメモリが激減しています。

原因の考察

サーバが重くなった原因は、Apache。
ウェブサーバーのプロセス数が増えた事で、空きメモリを喰います。
空きメモリを喰い尽くすとスワップメモリまで喰い始めます。

スワップを使用するとHDDの処理のボトルネックにより
サーバが重くなり、落ちたのだと思います。

と言うかWordPressメモリ喰い過ぎ!

PHPのmemory_limitを96MBにしないとWordPressが落ちる事が…
ps auxでhttpdのプロセスをチェックすると88MB使っているプロセスも有ります。

今後の対策

7時3分頃のアクセスログを見ると

[06/Aug/2015:07:04:35 +0900] "POST /wp-cron.php?doing_wp_cron=1438812268.4221379756927490234375 HTTP/1.0" 200 
[06/Aug/2015:07:04:14 +0900] "POST /wp-cron.php?doing_wp_cron=1438812254.1631751060485839843750 HTTP/1.0" 200 
[06/Aug/2015:07:04:13 +0900] "POST /wp-cron.php?doing_wp_cron=1438812253.2398209571838378906250 HTTP/1.0" 200 
[06/Aug/2015:07:04:11 +0900] "POST /wp-cron.php?doing_wp_cron=1438812249.4749999046325683593750 HTTP/1.0" 200 
[06/Aug/2015:07:04:36 +0900] "POST /wp-cron.php?doing_wp_cron=1438812272.4284639358520507812500 HTTP/1.0" 200 
[06/Aug/2015:07:04:33 +0900] "POST /wp-cron.php?doing_wp_cron=1438812270.5695769786834716796875 HTTP/1.0" 200 

ワードプレスのCronが頻繁にアクセスしています。

今後の対策としては

  1. wp-cronの自動実行をやめ、システムのCronで実行する
  2. ワードプレスのメモリ使用量の削減

の2つです。

まずは休みの日など時間がある時に、
どのプラグインがメモリを消費しているのかチェックします。

十中八九、JetPackだと思いますが。

それでは時々ブログが表示されるかチェックして
サーバの強制再起動で対処します。

今年中にはHTTPS化したいのでレンタルサーバーへの
移行は考えていません。