503エラーが発生する原因と対処法

error503_cause_top

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

発生する503エラー「Service Temporarily Unavailable」とは?

自分のウェブサイトのアクセス数が増加していくと、遭遇するエラー画面に「Service Temporarily Unavailable」や「Service Unavailable」といった503エラーが発生します。折角アクセス数が増えてきたのになぜなんだ!や早くウェブサイトを復旧して、閲覧できる状況にして機会損失を無くさないといけない!という状況に陥ります。

今回は503エラーである「Service Temporarily Unavailable」や「Service Unavailable」の原因と解決する方法をお伝えします。

 

503エラーの原因

HTTPステータスコードを定義した「RFC7231」では、503エラーは下記の定義になっています。

6.6.4. 503 Service Unavailable

The 503 (Service Unavailable) status code indicates that the server
is currently unable to handle the request due to a temporary overload
or scheduled maintenance, which will likely be alleviated after some
delay. The server MAY send a Retry-After header field
(Section 7.1.3) to suggest an appropriate amount of time for the
client to wait before retrying the request.

Note: The existence of the 503 status code does not imply that a
server has to use it when becoming overloaded. Some servers might
simply refuse the connection.

ザックリと翻訳すると、
HTTPステータスコード:503(Service Unavailable)は、サーバが過負荷のためリクエストを処理できなかったときに発生するエラー。またサーバーがメンテナンス中のときに表示するステータスコードに該当します。一部のサーバーはアクセスを拒否しているだけです。
という意味です。

早い話が主にアクセス数が増えた事(サーバーへの過負荷)が原因で、サーバーがアクセス自体を拒否しているということです。

慌てて503エラーの原因を確認する人がいますが、ほぼアクセス数の増加が原因。そのためサイト自体に問題や不具合が発生している訳ではない点に注意が必要です。

 

503エラーの解決する方法

503エラーが表示されるときは、サーバーが許可しているアクセス数(同時接続数)の上限を超えた状態。

つまり基本的な対応方法は

  • サーバーを増強する
  • サーバーへの負荷を減らす


の2択になります。

 

サーバーを増強する
対応策の1つ目は、サーバーが処理できる上限処理数を超えているのであれば、サーバー自体を増強して同時に処理できる数を増やせば良い!という考え方。

レンタルサーバーをご利用の場合は、現在のプランから上位のプランに変更する。AWS などのクラウドサービスであればスケールアップ(サーバー自体のスペックアップ)。月額費用は増えますが非常に分かり易い対応ではあります。

また自社でサーバーを構築しているならサーバー機器の増設しましょう。

 

サーバーへの負荷を減らす
2つ目の対応策は、サーバーへの負荷自体を減らす方法。

具体的にはキャッシュ機能を実装してサーバーへの問い合わせ自体を減らします。自作のプログラムであればキャッシュ機能を実装することになりますが、もし WordPress などの CMS でウェブサイトを構築しているのであれば、キャッシュ用のプラグインが提供されているので導入を検討しましょう。

また画像や CSS、JavaScript を CDN に移行する方法もあります。

CDN とは簡単にいうと高速なキャッシュ専用のサーバーのことです。

画像や CSS、JavaScriptなどを別サーバーに設置することにより、本体のサーバーへの負荷を減らします。またキャッシュサーバーは構造上、極めて高速で動作するためウェブサイトの高速化を実現するときによく利用されます。

気を付ける点としては、CDN は従量課金がメインのため費用が高額になる可能性があることに注意してください。無料版を提供しているサービスもありますが、503エラーがでるほどのアクセス数があるサイトであれば無料版は使えない…と考えましょう

 

状況別の具体的な503エラーへの対処法

問題の対処法
では実際に具体的な対処法や改善方法を確認していきましょう。

対処法としては、一時的なアクセスの急増に伴うエラーか、サイトが大きくなりユーザー数の増加に伴う慢性的なエラーかで対応が異なります。

 

一時的なアクセス数の急増に伴うエラーの場合

テレビや SNS でバズった、また Yahoo ニュースなどで取り上げられたことによる一時的なアクセス数の急増であれば、

  • アクセス数が一定数まで減るまで待つ


という対応もありえます。折角のアクセスを無にするのは勿体ないですが、コストをかけて対応するのも一苦労。であれば嵐が過ぎ去るまでおとなしく待つというのも有効な対応策になります。

ただ1点、事前にアクセス数の急増が想定されているのであれば、503のエラーページの設定は行っておきましょう。エラーページは「アクセスが集中しているので暫く時間を空けてアクセスしてください」…と言った内容。メッセージがあれば、時間をおいて再び訪れてくれる可能性が高まります。

レンタルサーバーであればご利用のサービスにもよりますが、503エラーが発生した際に表示するページを設定できる場合があります。

 

慢性的なアクセス数の増加の場合

定期的に503エラーが発生する場合は、先ほど記載した基本的な対応であるサーバーを増強するか、CDN やキャッシュ機能を実装して負荷を下げる対処が有力になります。

ただ本記事を閲覧している方の多くは、レンタルサーバーで WordPress を運用中の方が多いと想定されます。なので、レンタルサーバーと WordPress についてはもう少し突っ込んだ話をしていきます。

まずはサーバーへの負荷を下げる方法を考えてみましょう。

〇レンタルサーバーの場合における対処法

  • PHP7以上のバージョンであるか
  • キャッシュが有効か

PHP7以上のバージョンであるか
利用者の多い WordPress や EC-CUBE などのプログラムは、PHP で動作しています。

そのため、自分の利用している環境が PHP バージョンが PHP7 以上になっているかを確認しましょう。PHP7 系統は PHP5 系統よりも PHP の動作速度が段違いで早いため、PHP5 を利用の方は PHP7 に変更することをおすすめします。
※サーバーの場合は動作が早いとサーバーの負荷軽減に繋がります。

もちろん PHP5 から PHP7 に変更した際は、サイトに異常が無いかを必ず確認して下さいね。

キャッシュが有効か
レンタルサーバーではサーバーへの負荷を減らすため、キャッシュ機能を提供している場合があります。キャッシュ機能には OPcache や APCu といった複数の種類があり、レンタルサーバーによって提供されているかが異なります。ご利用のサーバーにて、適用できるキャッシュがあるかをチェックしてください。

 

ただ上記の対応でも厳しい場合は、

  • レンタルサーバーのプランを上げる
  • 高負荷に耐えれる別のレンタルサーバーに移設する


といったスペックを上げる方法しかないと考えた方が良いです。

もし安いレンタルサーバーを借りて 503エラーが発生しているのであれば、僕がよく利用するコスパが良いエックスサーバーにサイトを移転する事をおすすめします。ちなみにエックスサーバーの場合は、高負荷時に503エラーではなく510エラーとなり、510エラー用のエラーページの設定も可能です。

エックスサーバーについては、別記事で説明しているので興味があれば確認してみてください。

もし既にエックスサーバーを利用しているよ、別の月額1,000円以上のサービスを利用しているよ…と言う方は専用サーバーへの移行を検討してみてください。

 

〇Wordpress を利用している場合
Wordpress を利用しているサイト限定のチェックポイント。

  • キャッシュ用のプラグインは有効か
  • 無用なプラグインは無いか

キャッシュ用のプラグインは有効か
「WP Super Cache」や「W3 Total Cache」と言った WordPress のキャッシュ用プラグインを適用しましょう。

注意点としては、キャッシュ用はプラグインの有効化は必ず1つにすること(複数のキャッシュ用のプラグインを有効化すると誤動作の原因となります)。レンタルサーバーのキャッシュ機能と相性が悪くないかを確認して下さい。

つまり有効化した後にサイトの挙動がおかしくならないかの確認を怠らないようにご注意ください。

無用なプラグインは無いか
未使用のプラグインが有効になっていないかを再度チェックしましょう。プラグインは未使用でも有効になっているだけでサーバー負荷になるものもあるため、全く使っていないプラグインがあれば無効化しましょう。

 

503エラーは完全な機会損失のため勿体ない。ただ対応策を講じても解消できない場合は、物理的な問題なので、別のレンタルサーバーに移るなど早めに対応を打ちましょう。

 

さいごに

サイトにかかるコストは安くするべき!と断言される方が居ますが、
・サイト規模にあった環境(レンタルサーバーやVPSなど)
・サイトの適切な運用
を行わなければ本来得られる恩恵を損なう可能性があります。

管理を行っているサイトにより良い選択を行って503エラーに合わないことを祈ります。