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が頻繁にアクセスしています。
今後の対策としては
- wp-cronの自動実行をやめ、システムのCronで実行する
- ワードプレスのメモリ使用量の削減
の2つです。
まずは休みの日など時間がある時に、
どのプラグインがメモリを消費しているのかチェックします。
十中八九、JetPackだと思いますが。
それでは時々ブログが表示されるかチェックして
サーバの強制再起動で対処します。
今年中にはHTTPS化したいのでレンタルサーバーへの
移行は考えていません。