レンタルサーバーからの高負荷によるアクセス制限
いまやブロガーやアフィリエイターたちのデファクトスタンダードであるレンタルサーバー「エックスサーバー」(Xserver)。月々1000円台の利用料金で、安定したサーバー運営が可能ということで、大抵の人が利用していますよね。まあこのブログもエックスサーバーで運営しています。
まあそれでずっと細ぼぞとブログを運営してきたわけのですが、先日、このブログのある記事が非常にブレイクしまして、1日10万PVくらいになったわけですね。
それからワードプレスの管理画面にPHPのエラーメッセージが出ていたり調子悪いなと思っていたら、なんとエックスサーバーからサーバーに著しい負荷が掛けられたとしてアクセス制限されてしまっていました。その解除に結構手間取ったので、今回備忘録と情報の共有を兼ねて、エックスサーバー側からのメール内容やその対策について記事にまとめてみました。今後この事態に陥った人は参考にしてみてください。
アクセス制限の原因
ちなみに何がブレイクしたのかというと↓の記事
まあざっくり言うと風俗街の紹介記事な訳ですが、ここで紹介している飛田新地というのがこれがマツコDXさんの番組である「マツコの知らない世界」に取り上げられたんですよね。
するとそこから20分くらいで20000PVのアクセスが集まりました。このブログ大体1日あたり1万PVの規模なので、二日分くらいのアクセスが一気に来たことになります。まあその結果何が起こったのかというとエックスサーバーがパンクしたらしく一時503エラーが出ました。
まあ検索上位取れてたクエリがテレビに取り上げられたことでバズっただけの一過性のアクセスなので、数日でいつものアクセス数に戻ったわけですが、ワードプレスを動かしているエックスサーバーに大量アクセスによる高負荷掛かったとして、後日エックスサーバー側からアクセス制限を掛けたとの旨のメールが送られてきました・・・。
お手数ではございますが、
早急に負荷軽減対策を行っていただきますようお願いいたします。CPU負荷対策を行っていただきましたら、
お客様がなさった負荷対策の詳細を必ずサポートまでご連絡ください。ご実施いただいた負荷対策を元に改めてCPU負荷を調査し、
負荷状況に問題がないことを確認しましたら、
段階的な制限の緩和や、制限の解除を検討いたします。
これでどうなったかというと、ワードプレスの一部機能が制限されたことによって管理画面の文字がズレていたり、ワードプレスを構成しているphpというプログラミング言語のエラーメッセージが表示されていたり思った通りに動かなかったりとまあ少し不便になってしまいました。
他にもアナリティクスを見ると何回に一回か503エラーが出ていたりとアクセスを取りこぼしているみたいで、これはよろしくないということで重い腰を上げ、エックスサーバー側に一時的なブームはもう終わったのでアクセス制限を解除してほしいとメールを送りました。
がしかし向こうからの返事は、「原因がどうあれ一度こっちの設定上の負荷を超えたら何か対策をしてもらわないと困ります」という趣旨のもの。とにかくこのリソース制限を解除するためには、CPU高負荷対策を行わなければならないみたいです。
まあ一応エンジニアの端くれではありますが、フロントサイド系のエンジニアなので、サーバーの負荷対策なんぞさっぱり分からず、「いやー負荷対策とか言われてもぶっちゃけ何したらいいのかサッパリ分かりません」と変身したところ向こうから提示された負荷対策の手段は以下のようなものでした。
CPU負荷を軽減させるためには、
一般的には、下記のような観点からの対策がございます。
・プログラムの実行回数を減少させるための対策を導入する
・プログラム処理そのもののCPU使用量を減らす
WordPressなどのCMSツールをご利用の場合、キャッシュプラグインの導入をご検討ください
◆「PHP高速化設定(FastCGI)」および「APC」「OPcache」の導入をご検討ください
◆「PHP7」への変更をご検討ください
うん・・・。何を言ってるのかよくわからん。って感じで一カ月近く放置していたわけですが、仕事も暇になったので本腰を入れて調べると
まずは最初のキャッシュプラグインを導入してみました。有名なのはWordPressの場合、「WP Super Cache」や「W3 Total Cache」、「ZenCache(Quick Cache)」などですね。ただキャッシュを弄るということは一部プラグインが動作しなくなる可能性もあるので、あまりオススメではないですし、個人的にはあまり効果を感じません。
ただこのプラグインには注意があって、「WordPress Popular Posts」など、アクセスのたびにプログラムを実行する必要があるプラグインを導入している場合、キャッシュの影響によりこれらプラグインが正常に動作しないケースあります。
次に(実はこの対策が一番効いたのですが)、PHPのバージョンを上げました。確認してみると私の使っているPHPバージョンはPHP5だったのですが、最新ではPHP7で、これを導入すると2倍以上の実行速度を誇り、メモリ使用量が大幅に改善されるそうです。
エックスサーバーと契約したのがすでに2年前ですから、そりゃそうですよね。このくらい勝手にバージョンアップしてくれと言いたいところですが、バージョン上げると動作しない機能もあるので、エックスサーバー側は勝手に上げられないのですね。
さくっと対策して、効果も確認できたので、さっそくエックスサーバに行った対策とともに制限解除のお願いの連絡をしました。ここがちょっと重要なのですが、せっかく対策してもエックスサーバーに連絡しないと制限解除してもらえないので要注意です
という訳で一週間ほど待ってみたところ以下のようなメールがエックスサーバーのカスタマーサポートから届きまして、無事ブログも管理画面に出てたエラーメッセージとか消えました。
ただアーカイブやカテゴリが消滅したままで復活しないので、現在原因と対策の調査中といった感じです。ぶっちゃけ今のアクセスはほとんどスマホなので、PC側のデザインは別にそこまで深刻な問題ではないのですが、ワードプレスの最インストールとかが必要かもしれません。
終わり
実際今回の件があって、PHPバージョンを上げたら表示速度が改善されたので、そこだけは泣きっ面に蜂じゃないですが、唯一感謝です。
サーバーの管理画面なんて普段ほとんど見に行きませんが、PHPなどのプログラム言語やサービスがアップデートされているので、バージョンアップすると意外な性能アップにつながるかもしれません。
そしてそれでもこれだけの大量アクセスを安い料金で捌いてくれるエックスサーバーはやっぱりさすがだと思いました。今回の件にしても事後連絡とはいえ、高負荷対策をしっかりとサポートしてくれるので、安心はできます。
プログラマーとしては、root権限がないのが少しネックですが、ブログ(WordPress)サービスの運用目的で利用するレンタルサーバーとしてならエックスサーバーが価格・サービスの面から見てナンバー1だと思いますえ!(媚びを売る)
コメント