先日、エックスサーバーで管理している全てのサイトが一度に落ちました。500エラーと503エラーが交互に表示されるようになったんですが、そのときにやった対処・解決方法をまとめておきます。
500エラー、501エラー、503エラーの原因は?
500エラーの場合
ある日、自分のブログにアクセスしようと思ったら、こんな現象が起こりました。かの有名な500 Internet Server Error(インターネット・サーバー・エラー)というやつです。
エラーページに表示されている原因は次の通りです。
断続的に発生する場合
- CGIの負荷が大きいCGIプロセスが多数動作している。
常に発生する場合
- CGIのパーミッション設定に誤りがある。
- CGIのソースコードに問題がある。
- htaccessの記述に誤りがある。
「常に発生する場合」の3つの原因はパーミッション、ソースコード、htaccessを変にいじくらない限り起こらないので、大半が「CGIの負荷が大きいCGIプロセスが多数動作している」ことによる問題になります。簡単にいうとサーバーに大きな負担がかかっているためにエラーが生じているのです。
501エラーの場合
501エラーの場合は次にようなメッセージが表示されます。
僕の場合、管理者画面で、記事を更新するときに度々このエラーが起こりました。せっかく更新してもこの画面になって進まないので結構やっかいです。
こうなった場合は、サーバーのWAF設定(XSS対策)が原因の可能性があり、「WAF設定」の「XSS対策」の項目をOFF(無効)にすることで解決できます。
もしそれでも直らない場合は、「コマンド対策」もオフにしてみましょう。
大部分の場合、これら二つをオフにすることでエラーは解決するはずです。
503エラーの場合
また、別のときには503 Service Unavailable(サービスが利用できません)というエラーが表示されました。
原因はただひとつ、「アクセスが大量に発生しているための一時的なエラー」です。つまりアクセスが集中的に発生したことにより、サーバーに負荷が生じてエラーになったようです。
500エラーと503エラーの対策と解決方法
まずはエックスサーバーに問い合わせて見るのが一番です。向こうから注意のメールが来ることもありますが、何もない場合は自分からメールしましょう。僕の場合はこんな返信メールが来ました。
お客様のサーバーアカウントにおいて集中アクセスによりサーバー全体に非常に高い負荷がかかっておりました。そのため、障害の発生を防ぐことを目的とし、お客様のサーバーアカウントへのWebアクセスを一時的に制限しておりました。お手数ではございますが、早急に対策を行っていただきますようお願いいたします。
500エラーと503エラーいずれの場合も設定のエラーでない限り、サーバーへの負担を軽減させる必要がありそうです。そのためにできることはおおよそ次のようなことです。
1、キャッシュプラグインを使う
ワードプレスのキャッシュ系プラグインを使うことでサーバーの負担を大幅に改善できます。キャッシュプラグインとは、すなわち一度誰かがアクセスしたページを一定時間静的なデータとして保存し、次回以降のアクセスにおいては保存した静的データを活用することで、CPU負荷を大幅に軽減し、動作を高速化させるツールです。
よく意味が分からなくても、とにかくサイトを軽くして速くするものだと理解していただければ十分です。ワードプレスを使っている人には必須のプラグインです。
人気のワードプレスのキャッシュプラグインはこの辺です。
このあたりの画像の圧縮形プラグインも使うと画像の重さが軽減されます。
2、エックスサーバーのmod_pagespeed設定をOnにする
エックスサーバーにはWebサイトのコンテンツを最適化し、表示速度の向上および転送量の軽減を図るツール「mod_pagespeed」が組み込まれているので、これを必ずOnにしましょう。
「ホームページ」>「mod_pagespeed設定」>ドメイン名をクリックすると設定ページに行けます。
「ONにする」をクリックするだけで、設定が完了です。
3、国外IPアクセス制限をする
アクセスの集中が記事がバズッたことによるものなら問題ないですが、海外からのスパムやボットによる不正なアクセスが集中してサーバーに負担がかかるケースもあります。そんなときは国外のIPアクセス制限をしておきましょう。サーバーの負担やエラーに関わらずにセキュリティー強化においても便利です。
「WordPressセキュリティ設定」>ドメイン名をクリックすると設定ページに行けます。
ダッシュボードアクセス制限、ログイン試行回数制限、コメント・トラックバック制限など様々な設定ができます。注意したいのは自分が海外にいる場合はこれをしてしまうと、自分のアクセスまで制限されてしまうことです。僕は海外在住なのでダッシュボードアクセス制限は「OFF」にしてあります。
また、特定のIPアドレスのアクセスを制限するには、「アクセス拒否設定」>ドメイン名をクリックすれば設定画面に行けます。ログを調べて、およそ自分のサイトと関連性の薄い特定の地域からアクセスが集中している場合はこれを利用するべきです。一度、ロシアからものすごい数のスパムコメントが送られてくることがありましたが、そのときはこれでブロックしました。
アクセス拒否IPの追加をクリックして、IPアドレスを入力するだけでそのIPからのアクセスを防ぐことができます。
4、エックスサーバーのPHPのバージョンを最新のものにする
僕の場合、1、2、3の対策をやってもまだエラーが続きました。一つのサーバーで管理しているドメインの数は18個もあり、アクセス数も月150万PVを超えているので時間帯によっては常に大きな負担がかかっているようでした。そこでPHPのバージョンを最新にしてみました。「PHP Ver.切替」>ドメイン名で設定画面に行けます。
推奨されているバージョンにデフォルトで設定されていると思いますが、これを最新のにすると大幅にパフォーマンスが改善されます。スピードも見違えるように速くなりますよ。
ただし、環境やブログの設定によっては最新のバージョンに対応していないことがあり、変更することでエラーが生じる場合もあります。
僕の場合、いくつかのプラグインからエラーメッセージがいくつかでました。しかしこれもプラグインを削除、または停止するだけで簡単に解決できます。実際、最新バージョンに変更してから500エラーと503エラーは出なくなったので最終手段としてこの方法を使ってみてください。
まとめ
エックスサーバーはマルチドメインに対応していて、値段もかなりリーズナブルですが、かといって無制限にどれだけ負荷をかけてもいいということではありません。
特にブログのアクセスが急増し、波に乗ってきたときにこそサーバーエラーはつきものです。せっかくの稼ぎどきにサーバーが落ちてしまうのはなんともふがいないのでサイトの軽量化やサーバーへの負荷の軽減は必須の作業です。
今回はサーバーが落ちてしまいましたが、エックスサーバーはほかのサーバーと比べても安定感は高く、問題時の対応も悪くなかったので、今後も使い続けていこうと思います。