Webサイトを運営していると、急にアクセスが伸びてPV数が大きく増えることがあります。
しかし、それが原因でサーバーへの負荷が大きくなってしまってページへアクセスすると「503 Service Temporarily Unavailable」というエラーが発生するケースがあります。
今回は、Webの503エラーが起きる原因と復旧のための対処方法について解説します。
この記事の内容
503エラーの意味と起きる原因
503エラーはHTTPステータスコードの1つで、エラーの意味はWebサーバーへのアクセスが一時的にできない状態を表しています。
ほとんどの場合、Webサーバーへのアクセス量が過多していることが原因となり、Webページが正しく表示されなくなることがあります。
具体的には次のようなケースで503エラーが発生することがあります。
- TwitterなどのSNSでバズった
- Yahoo!ニュース、スマートニュース、LINE NewsやGoogle Discoveryに掲載された
- 単純に検索エンジンからの検索流入が増えた
- 利用しているサーバーから接続規制を受けている
いずれの場合でも根本的な原因は「アクセス集中」です。503エラーは、起きてすぐに復旧させることは難しいため、本来は503エラーが起きないように対策しておくことが理想的です。
続いては、503エラーが起きた時の対処について紹介していきます。
対処1: アクセス集中が収まるのを待つ
スマートニュースなどに掲載される・SNSで拡散されるなどの理由で記事が突然バズって一時的にアクセスが急増したことが503エラーの原因だった場合、アクセス数が収まるまで待ち続けるという方法もあります。
常にアクセス過多で503エラーが発生する場合にはこの方法を使えませんが、一時的にアクセスが増加した場合はしばらくするとアクセスが落ち着くので、それまで待つようにしましょう。
これが最もお金をかけずに503エラーを復旧させる方法です。
ただし、Webページが表示されないことによる機会損失が少なからず生まれるため、503エラーを起こさないためにもこの記事で紹介している別の対処法も実践するようにしてください。
対処2: 画像などのリソースをCDNから配信するようにする
アクセスが集中して503エラーが起きる要因の一つとして、サーバーから転送量の増加です。
サーバーから転送されるデータの9割以上は画像や動画といったリソースファイルであり、これらのファイルを別のサーバー「CDN」から配信することによってサーバー転送量を大幅に削減することができます。
CDNから配信する方法は利用するCDNにより異なりますが、503エラーが起きた際はCDNから配信するように設定を変更することをお勧めします。
対処3: Webページのキャッシュを表示させるようにする
WordPressなどの「ページにアクセスするためのデータベースへのアクセスの発生する」システムをを利用している場合、データベースへの負荷が原因で503エラーが起きてしまうことがあります。
対処の1つとして、Webページをキャッシュする方法があります。Webページをキャッシュして表示させることで、データベースの負担が少なくなり、503エラーが改善できる可能性があります。
ページキャッシュは、レンタルサーバー側の機能やWordpressの場合はプラグインを使う方法が一般的です。
- レンタルサーバーのキャッシュ機能
- WordPressのキャッシュプラグイン
対処4: HTML/CSS/JSを圧縮する
Webページのデータを圧縮して配信することで、データの転送量が減り503エラーが解消する可能性があります。
HTML、CSS、JavaScriptの圧縮をするには、無駄なソースコードを削除して軽量化します。
手動で行うのは大変ですので『Online JavaScript/CSS/HTML Compressor』などのツールを使うことをおすすめします。
WordPressのプラグインで圧縮する
WordPressの場合は、「Autoptimize」というプラグインを利用してHTML/CSS/JSを圧縮することができます。
- プラグイン「Autoptimize」をインストール、有効化します。
- Autoptimizeの設定画面に移動し、JavaScriptコードを最適化・CSSコードを最適化・HTMLコードを最適化にチェックを入れる
- [その他のオプション]の[連結されたスクリプト/CSSを静的ファイルとして保存]にチェックを入れて保存する
これでWebページがキャッシュされるようになり、データベースへのアクセスを減らした上で転送量も減らすことが出来ます。
対処4: AMPに対応させる
WebページをAMPに対応させたページはGoogleやTwitterのサーバーから配信されるようになります。
そして、スマホなどのモバイル端末からの検索やGoogleアプリに表示されるおすすめ記事からアクセスする際は、GoogleやTwitterサーバーから配信されているページに優先的にアクセスするようになるため、利用中のサーバーにアクセスすることがほとんどありません。
503エラーが起きる原因のほとんどは検索流入やGoogleアプリのよるおすすめ記事に掲載されるなどのバズが原因であるため、AMPに対応させておくと急なアクセス増加による503エラーを回避しやすくなります。
ただし、AMPは制約が厳しく、少しでもルール違反があればAMPページとは認められないため、導入の敷居が高いです。
WordPressのプラグインで対応する
WordPressを利用中であれば以下の方法でかんたんにAMPに対応させることが出来ます。
- プラグインの新規追加ページで「AMP for WP」を検索してインストールします
- インストール完了後、[有効化]します
WordPressの場合、プラグインを使って簡単にAMPに対応させることが出来ます。
対処5: サーバープラン・Webサーバーを変更する
次のケースの場合は、サーバーの負担を下げる対策を行うだけでは解決が難しいケースもあります。
- データ転送量が上限を超えている
- ほとんどのレンタルサーバーには、転送量の上限があり、超過すると接続数制限がかかって503エラーが頻発するようになります。
- サーバースペックが同時接続数を処理できていない
- サーバーが同時接続数を処理できないと503エラーが発生します。
- 共用サーバーを利用していて、他の利用者のサイトがサーバーに負担をかけている
- 共用サーバーの場合は、他の利用者の負担によって503エラーが起きる場合があります。
上記のケースの場合、サーバープランやレンタルサーバーを変更することで503エラーが解消できる可能性が高いです。
転送量を超えている場合
転送量の上限を超えてしまっている場合、次の3つの対策があります。
- サーバープランを変更して転送量の上限を増やす
- 転送量の上限が高いサーバーに乗り換える
- HTML、CSS、JSや画像ファイルを圧縮して転送量を少なくする
転送量の圧縮が難しい場合は、素直にサーバープランか別のレンタルサーバーに移行することをおすすめします。
サーバーによっては、プランを変更しても転送量が変わらない場合もあるため注意しましょう。
また、プラン変更ができないサーバーも多いため、その場合はレンタルサーバーの移行を検討しましょう。
転送量の上限を確認するには?
それぞれのレンタルサーバーやプランで転送量の上限は異なります。一般的には1ヶ月の転送量で判断しているサーバーが多いですが、中には1日の転送量で上限を決めているサーバーもあります。
そのため、契約しているサーバーの転送量の上限と、使用している転送量が上限を超えていないか確認しましょう。
使用している転送量は、サーバーのコントロールパネルから確認できます。もし確認できないレンタルサーバーの提供元に問い合わせてみましょう。
サーバースペックが低い場合
ロリポップなどのスペックの低い格安サーバー(月1000円未満)を使ってる場合は、同時接続数を処理できるサーバースペックが足りていないことが考えられます。
サーバー負荷を下げる対策には限界があるので、より性能の良いサーバーに引っ越しするようにしましょう。
月間のアクセスが100万PV前後であれば、『エックスサーバーのX10プラン』や『ヘテムルのベーシックプラン』あたりがおすすめです。
サーバーによってはプランの変更でサーバースペックが変わることもありますが、上位プランに変更しても容量や転送量が増加するだけで、CPUやメモリと行ったサーバースペックが変わらなケースもあるので注意しましょう。
いつまで経っても503エラーが定期的に起きる場合はこの方法が一番手っ取り早いです。
共用サーバーを利用している場合
多くのレンタルサーバーは、1台のサーバーを複数人で利用する共有サーバーの形態で運用されています。
共用サーバーを利用している場合は、サーバーのリソースを同じサーバーの利用者で共有しているため、自分以外のWebサイトの影響を受けてしまいます。
そのため、自サイトに変化がない場合でも、他の利用者のサイトに負担が増えていることが原因で、503エラーが起きているケースも考えられます。
上記のトラブルを解消するには、次の2つしか方法はありません。
レンタルサーバーの運営会社の対応を待つ
一旦レンタルサーバーの運営会社に連絡し、サーバーの負担に問題があることを伝えましょう。
対応してもらえない場合は、別サーバーへの移行を検討します。
別のサーバーに移行する
他の利用者のサイトの負担が大きかった場合、別の共用サーバーへ移行することでエラーが改善するケースも少なくありません。
ただし、共用サーバーの場合は、同様の現象に見舞われるリスクは常にあります。
確実な対策としては、1台のサーバーを独占できる「専用サーバー」を利用することです。ただし専用サーバーは、その分料金が高めですので、慎重に検討しましょう。