WP Super Cacheでサーバーが落ちる
WP SuperCache 0.9.2を入れていると、サーバーに良くない影響があるかもです。原因が分からずにかなり迷走してしまいました。
ある時から突然、サーバーが頻繁に落ちるようになりました。正確には落ちるのではなく、httpd(Apache)のプロセスが一気に上限まで立ち上がった状態になり、ブラウザでサイトを開いてもずっと読み込み中になったまま、という状態になります。以降、「落ちる」といった場合はこの状態を指すことにします。
apacheを再起動するとこの状態は改善されるのですが、数時間経過すると再び同じ状態になります。
Apacheのエラーログを見ると以下のログが残されていました。
server reached MaxClients setting, consider raising the MaxClients setting
つまり、「設定しているMaxClientsが上限に達したから設定値をもっとあげたらどう?」ということらしいです。それにしても、上限に達したとたんに無反応とかどうよ…?
しかも、落ちる時間的がそんなにアクセスが集中するような時間でもない、という点も気になります。
そんなわけで4、5日くらいあーでもないこーでもないと試行錯誤していたのですが、改善される様子もなく。
結局、アクセス数の「瞬間最大風速」にやられるのだろう、という結論にいたり、サーバーのメモリを256から512に増やすことにしました。時間帯によってアクセス数にむらがあるので。
まあ、増やしてから24時間しないうちにまた落ちたのですが。
これはやっぱりメモリが足りないせいじゃない!
ということで、再度ググることにしました。そこで見つけた以下の記述。
“障害の原因がメモリ不足のようなので、PHPのプログラム側にメモリリークするようなバグがあるか、設計(&実装)に問題があってメモリをバカ食いしているかのどちらかだと思います。”アクセス障害でこまってます。 – BIGLOBEなんでも相談室
php関係で変わったところと言えば、WP Super Cacheをアップデータしたこと。そういえば、WP Super Cacheをアップデートしてから、サーバーが落ちるようになったような気が。
そう言われてみると、サーバーの落ちる時間間隔が、WP Super Cacheで設定しているキャッシュのクリーンアップの時間間隔と一致するようなしないような。
というわけで、WP Super Cacheを外して見ることに。するとどうでしょう。1日経過してもサーバーが落ちなくなったばかりか、プロセスがMaxclientsに達してもサーバーが落ちなくなったではありませんか。
これはやっぱり、WP Super Cacheが犯人か?と思っているところにWP Super Cache0.9.3がリリース。Changelog.txtを追ってみたところ、以下の記述がありました。
“2009-03-30 04:53 donncha
* wp-cache-phase1.php, wp-cache-phase2.php: Don’t use array_push().
Removed wp_cache_file_contents action as it may contribute to
memory problems for some hosts.
Pass buffer by reference to ob function.
Revert merge of shutdown function and ob function
Pass “siteurl” to post_id gc function”
何を言っているのかよく分かりませんが、なんかメモリ関係で問題があって、それを直したっぽいです。
現在、WP Super Cache 0.9.3.1を使用していますが、とりあえず問題なく動いているようです。
