情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

503 Service Temporarily UnavailableをWP Super Cacheで回避したお話とその副作用

WordPress (76) WordPressプラグイン (25) WP Super Cache (3)

このブログにアクセスが集中した際、ブログにアクセスできない状態が発生しました。これを回避するために導入したWP Super Cacheの仕組みと効果、およびデメリットや注意すべき点をまとめておきます。

アクセスが集中して503になった

先日「LINEアカウントは乗っ取られやすい!?LINEの仕組みと注意すべきポイントまとめ」にアクセスが集中した際、「ページが見られない」というTweetを発見し、実際に自分がアクセスしてみても非常にページの読み込みが遅く、たまに「Service Temporarily Unavailable」が表示され、閲覧不能になってしまいました。

そこで、慌てて導入したWordPressプラグインが「WP Super Cache」です。

参考情報メモ

このとき、Google Analyticsのリアルタイム機能によれば、アクティブユーザは80前後でした。サーバはさくらのレンタルサーバのスタンダードプランで、ブログにはWordPressを使っています。その日の転送量は7GB台でした。

WP Super Cache

WordPressは、PHPで書かれたプログラムで、ページにアクセスがあるたびにPHPが動作し、表示するページを生成して、ユーザに送信します。つまり、アクセス毎にCPUをそれなりに使用することになり、アクセス数が増えると、どんどんCPUの使用量が増えていくという特徴があります。これは、あらかじめページを作っておくMovable Typeと大きく違う点です。

こんなとき、WP Super Cacheを導入すると、一度生成したページをキャッシュとして残しておき、同じページにアクセスが来た際には、そのキャッシュを送信し、再生成しないというCPUの節約ができるようになります。このようなキャッシュを有効にするプラグインはたくさんあるのですが、使ったことのない自分でも名前を知っているほど「WP Super Cache」は有名で、すぐさまインストールして有効化してみたのでした。

効果

効果はまさしく絶大で、有効にした直後、503は解消され、ページが一瞬で表示されるようになりました。ここまで効果が大きいとは思っていなかったので、大変驚きました。

また、503の解消に伴い、アクティブユーザ数もたちまち増加し、100以上まで増加しました。

デメリット

キャッシュの期限が切れて、ガベージコレクト(キャッシュの定期削除)が行われない限り、サイトの変更が反映されないという点です。たとえば、記事を更新しても、トップページに表示されなかったり、ページデザインを変更しても、変更が反映されず、古いまま表示され続けてしまいます。こういうときは、「WP Super Cache 設定」にある「キャッシュを削除」ボタンを押すことで、キャッシュが再作成され、更新が反映されます。

このように、キャッシュを意識した更新を行う必要があるのが少し不便です。設定で解消できるのかもしれませんが(ブログの内容を更新したらキャッシュを削除するとか。コメントが更新されたらキャッシュを削除する設定はあった)

副作用

これもデメリットの一つですが、「プラグインによっては、正しく動作しなくなることがあります」特に、アクセス数を数える「アクセスカウンタ・アクセス解析」系のプラグインで不都合が起こります。

自分の場合は、CounterizeとStatPress Reloadedが正しく動作しなくなりました。具体的には、キャッシュにアクセスされた場合にアクセスが記録されないという問題が起こってしまったのです。

これは、キャッシュにアクセスされたとき、アクセスをカウントしている部分のPHPが動作せずにページが表示されてしまうことが原因のようです。つまり、キャッシュがない(削除直後)状態のページにアクセスされたときのみアクセスが集計されるのです。

結局よい対策は発見できず、アクセスカウンターは削除し、StatPressも利用しないことにしました(Google Analyticsへの一本化)。またちゃんと確認したわけではありませんが、「WordPress Popular Posts Plugin」のアクセス数の集計もうまくいっていないかもしれません。しかし、とりあえず表示される「view(s) per day」の数値は大きくずれていないように見えました。

まとめ

アクセス集中などによる過負荷で503 Service Temporarily Unavailableなどが表示されてしまい困ったときは、「WP Super Cache」の導入がとても大きな効果を上げてくれるのではないかと思います。しかし、相性の悪いプラグインも存在するため、導入前にプラグインが使用可能か確かめた方が良さそうです。また、過負荷が発生してからのプラグインインストールは失敗する可能性があるので、アクセスが集中する前にインストールだけでもしておいたほうがいいのかもしれません。本当にアクセスが集中してしまうと、管理画面すら表示できなくなってしまいますし。

アクセスの集中とその後

今回のアクセス集中で、さくらのレンタルサーバからのプラン変更や、別のレンタルサーバへの移行を考えましたが、このWP Super Cacheの効果に期待して、当分の間はサーバ変更を保留することにしました。「サーバが落ちたらサーバを移転するしかない」という訳ではないよ、っていうことを言っておきたいと思います。

今回のアクセス増加はtwitterとfacebookでの拡散が原因だったようで、初めて1日のPVが1万を超える記念すべき日となりました。

コメント(0)

新しいコメントを投稿