いわしブログで503エラーが頻発するようになった原因と、サーバのアクセス制限で対処する方法をご紹介します。
いわしブログのPVは現在1000~1500PV/日ですが、この程度で503エラーが出ることは通常考えられません。調べてみると、謎の海外サイトからのアクセスが原因でした。ここのIPアドレスを.htaccessに記述してアクセス制限することで、503エラーは表示されなくなりました。
今回の503エラー頻発は、いわしブログで使っているさくらインターネットのサーバーで起こった事例ですが、他のサーバーでも参考になると思います。
PVが少ないのになぜか503エラーが頻発
先週のことですが、いわしブログの更新作業中に、なぜか503エラーが頻発するようになりました。
更新作業中の503エラーなので、最初はWordPressがおかしくなったのかと思いましたが、いわしブログの記事を見ても同じように503エラーが表示されます。
ついにGunosy砲やYahoo砲がやってきたかと思ってGoogleアナリティクスを見ると、リアルタイムは普段通りの数字でした。アクセスが集中したわけではないようです。
あれれ、1000~1500PV/日のいわしブログで、503エラーはありえない。いわしブログで使っているさくらの共用サーバーは、この程度のアクセスに耐えられないはずがありません。ブログの表示速度を調べても、特に変わったことはありません。
ここで役立つのがサーバー側の情報です。いわしブログに使っているさくらインターネットのレンタルサーバーには、コントロールパネル内に「アクセスログの設定」と「リソース情報」という項目があります。ここを見れば、サーバーの状況がわかります。
サーバーのアクセス制限 503エラー
サーバーの状況を説明する前に、503エラーについて簡単に説明しておきます。
みなさんはウェブサイトやブログを見ている時に、このようなエラーメッセージが表示されたことはありませんか?
このエラーメッセージは503エラーと呼ばれ、簡単に言うと「サーバーのアクセス数の制限を超えていますよ」という意味です。安い共用サーバーでは、一時的に多量のアクセスが集中すると捌き切れないので、503エラーを表示して閲覧制限をかけます。
503エラーは混雑時の入場制限みたいなもんでしょうか。Gunosy砲やYahoo砲を喰らうとよく発生するのですが、いわしはまだ一度も喰らったことがありません・・・(T_T)
こちらに503エラーについての詳しい情報がありますよ。興味がある方はどうぞご覧ください。

さくらのサーバー リソース情報
では、サーバーの状況を見ながら、何が起こっているのかを確認してみましょう。
まずはサーバーのリソース情報を確認します。コントロールパネル内の左メニュー「運用に便利なツール」→「リソース情報」をクリックすると、503エラーの発生状況が確認できます。
ご覧のとおり、503エラーが頻発しています。一番多かった5月17日は15000回を超えています。
PV数も明らかに異常な数値ですが、503エラー対策として特定IPのアクセスを制限した24日以降は急激に減っています。
503エラーが発生したユーザ数とCPU使用時間です。グラフ右側の平常運転とは明らかな違いがありますね。このグラフを見れば一目瞭然ですが、503エラー発生はしばらく気が付かなかった・・・
一方で、ユニークユーザー数とウェブ転送量は変化なしです。
これでサーバーの状況がわかりました。続いてアクセスログを確認してみましょう。
さくらのサーバー アクセスログの設定
アクセスログの確認は、コントロールパネル内左メニューから「アプリケーションの設定」→「アクセスログの設定」をクリックしてください。
ちなみに、アクセスログの初期状態はご覧の通り、自分で設定しないとログが保存されないようになっています。
アクセスログはトラブル発生時のための大切な情報です。さくらインターネットのサーバーをお使いの方は、アクセスログの設定を確認して、ログが保存されているかどうかを確かめてください。
Webalizerでアクセスを解析
さくらインターネットのサーバーには、アクセスログをWebalizerで解析できる機能が備わっています。アクセスログが残るように設定を変更すると、アクセス解析の表示に「アクセス解析」という項目が追加されます。
Googleアナリティクスでもアクセス解析は可能ですが、Webalizerを使えば、Googleアナリティクスには現れないアクセスの詳細まで解析できるようになります。
さて、解析結果におかしな数字がないか探してみると・・・ありました、ホスト名「198-23-238-206-host.enwebhost.net」から異常な回数のアクセスが記録されています。原因は恐らくコイツですね。
「198-23-238-206」はIPアドレスでしょうか。検索してみるとアメリカ合衆国と出ました。何のサイトかはわかりませんが、このIPからのアクセスを制限してやれば、503エラー問題は解決するはずです。
.htaccessでアクセス制限
「198-23-238-206-host.enwebhost.net」からのアクセスを制限するには、.htaccessを活用します。記載事項はたった1行だけ、「deny from」に続けて、アクセスを制限するIPアドレスを記載します。
頭の「198-23-238-206」の部分を、IPアドレス「198.23.238.206」に置き換えて、.htaccessに特定IPのアクセスを制限する「deny from 198.23.238.206」を記載すればOKです。
あとは.htaccessをサーバー内のトップページと同じディレクトリにアップすれば、503エラーは収まるはずです。
アクセス制限によって503エラー問題が解決
こちらがその結果です。ご覧のとおり、対策後は503エラーがほとんど表示されなくなりました。原因はやっぱり「198-23-238-206-host.enwebhost.net」からのアクセスでしたね。
503エラーは一時的に多量のアクセスが集中することによって起こりますが、こんな事例もあるということで。
大抵のレンタルサーバーには、アクセスログの解析やサーバーの状況を確認できる機能が備わっています。503エラーに限らず、何かおかしいなと思ったら、まずサーバーの情報をチェックするようにしてください。
こちらも参考にどうぞ。xmlrpc.phpに対する攻撃への対処法です。放っておくと、503エラー頻発の原因になりますよ。

