WordPressで503エラーが頻発したらこのように解決する
1.503エラーとは
503 Service Temporarily Unavailable
このようなエラーメッセージが表示されて、Webサイトにアクセスできない状態。これが503エラーです。
503エラーとは一時的にアクセスが集中していることが原因で、処理しきれませんといった意味のメッセージなのです。
せっかく訪問してくれたユーザーを逃してしまう最悪の事態であり、速やかに解決をはからなければなりません。
2.503エラーの原因
2-1.503エラーは自分で解消しなければならない
前述したとおり、アクセスが集中していることが原因です。
しかし、通常のWebサイトであれば503エラーが発生するほど、アクセスが集中することはまずありません。
そこで勘違いされがちなことがあります。
通常のレンタルサーバーは数百人以上の利用者が、1台のサーバーの処理能力を分かち合ってWebサイトを作っています。
それが理由で、
「このサーバーは自分はほとんど使ってないのに、他の人のWebサイトへのアクセスが多いから503エラーが出てしまうのだ」
「業者のサーバーの処理能力が低いから503エラーが出てしまうのだ」
と思ったりするかもしれませんが、そのようなことはありません。
自分のWebサイトへのアクセスが多いからなのです。
しかし、多くのWebマスターは最初からこの可能性を否定してしまうのです。
その結果、
「もっと処理能力の高いサーバー会社に移ろう」
「もっと上のプランにしよう」
といった解決策をとるかもしれません。でも、それをする前に確認すべきことがあるのです。
503エラーが出ることは正常な動作であり、正しい対処を求められている状況なのです。対処すべきなのは、サーバーを使っている自分の側です。
2-2.503エラーを表示させる理由
共用サーバーは1台のサーバーを、多くのWebサイトを運営するユーザーで分かち合って利用されるものです。
そのため特定のWebサイトに多くの処理能力を取られると、他のユーザーのWebサイトの処理に支障が生じてしまいます。
この対処のために、特定のWebサイトが処理能力を使い過ぎたときは、そのWebサイトの処理を止めて他のユーザーに迷惑がかからないようにするのです。このような時にWebサイトの処理が停止させられている旨のエラー表示が503エラーなのです。
ですから503エラーは正常な動作といえるのです。
3.503エラーの解消方法
処理能力を使い過ぎているのは自分のWebサイトなので、自分のWebサイトの処理の負荷を減らせば503エラーは解消することができます。
実際に1日のアクセス数が数万以上といったレベルであれば、本当に処理が多すぎて503エラーになっているのかもしれません。上位のプランに変更する、あるいは専用サーバーに変更を考える必要があるでしょう。
でも、このようなケースはそれほど多くはありません。
3-1.意外に多いxmlrpc.phpによって不正侵入を試みるアクセス
WordPressには投稿をメールで行う機能があります。
この機能が不正侵入者からよく狙われるのです。
実際に私が経験した事例を挙げておきます。
さくらインターネットの場合はコントロールパネルにリソース状況という画面があります。
これを確認してみましょう。
月間数千程度のアクセスしかないWebサイトなのですが、503エラーが1日に多い日では6万回以上も発生していることがわかります。
これはほとんどアクセスできない状況といっていいでしょう。
「2015/07/30 xmlrpc.php の過負荷により、CGI/PHPが制限されています。」
と表示されており、7/30から継続的にこのようなエラーが出ていたということです。
このWebサイト自体は実験用に作ったもので、しばらく放置していたために気がつかなかったのです。
xmlrpc.phpに何故これほどアクセスされるのでしょうか?
このファイルはメールを使って投稿する機能です。パスワードがわかればこの機能を介して投稿できるわけです。
なので、不正侵入者は様々なパスワードを試して、投稿しよう試みるわけです。様々なパスワードを次から次へと総当たり的に入れるためとんでもないアクセス数になってしまうのです。
対応としては、xmlrpc.phpにアクセスできないようにすればよいのです。
xmlrpc.phpというファイルがWordpressインストールの直下にあります。
このファイルにアクセスできないようにすればよいのです。
メールでの投稿機能を使わないのであれば、このファイルを消してしまう、もしくは名前を変更してしまうというのが最も簡単な対処法です。
しかし、この対処方法は簡単なのですが、Wordpressのアップデートが行われるともとに戻ってしまう欠点があります。
.htaccessを編集してアクセスできないようにしてしまうのが良い方法です。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
# END WordPress
.htaccessに赤字の部分を追記します。
正常に設定できると、http://○○○○○○○○/xmlrpc.phpにアクセスすると(○○○○○○○○にはドメイン名が入ります)、
Forbidden
You don’t have permission to access /xmlrpc.php on this server.
というエラーメッセージが表示されるようになります。
xmlrpc.phpによる不正侵入を試みることが原因での503エラーはこれで回避することができるでしょう。
3-2.プラグインが処理能力を使い過ぎている場合
プラグインを多数使うと、処理能力を使う原因になります。
必要最小限のプラグインにしてみて、503エラーがなくなるか試してみましょう。
3-3.独自プログラムが処理能力を使い過ぎている場合
このような場合はWebマスターが自分で原因がわかっているはずなので対処は容易でしょう。
4.3.の方法で解決しない場合
ユーザーサポートに連絡するのがよい解決策です。
サーバーの移転を考えるのは最後の策です。原因が解決できない限り、サーバーを移転しても解決しないかもしれません。
ユーザーサポートで解決できない場合は、そのサーバー業者の問題解決能力に問題がありますので、その時点で初めてサーバーを移転して業者を変えることを検討するのが良いと思います。