以前、メインのサイトでService Temporarily Unavailable(サービス テンプオアーリィ アナヴィラボー)というエラー画面が頻発するようになりました。
503エラーと呼ばれるものですね。
最初は分からずしばらく放置していたのですが、次第に表示する回数も増えてきたのでどうにか解決すべく色々試してみたので、その時の解決方法を紹介します。
503エラーが頻発した…
最初はなんの事か分からず「サイトがどうかなったのか!?」と戸惑っていたのですが、調べてみると
「訪問者数がキャパオーバーの為、一時的にサーバーにアクセスできません」
といった意味なんですね。
サーバー側に急な負荷がかからないようにする為の予防・自己防衛システムで、決してサーバーが落ちたという訳ではありません。
誰がどこが悪いという訳でもなく、ただ旦にホームページに多くの人がアクセスして負荷がかかってる状態です。
私が使用しているサーバーはロリポップサーバーで、月額100円のエコノミープランでした。
所が運営しているホームページのアクセス数は一日5000~1万PV。
転送量40GBで、同時アクセス数の制限もかかってるこのプランではちょっと多い数字です。
さらに、jqueryを多様、画像を多く使用していた点も負荷がかかった理由でした。
503エラーの怖い所
503エラーの怖い点というのは、制限中に本来訪れるべきだった人を弾いてしまうだけでなく、その中には「このサイトは無くなったんだ」と勘違いされてしまう事もある事です。
その後検索エンジンであなたのサイトの記事を見つけた時、以前見れなかったから…とパスされる可能性もあります。
また、503エラーはいつどこで発生しているかわかりません。
あなたがたまたま見つけたのは氷山の一角であり、「ゴキブリは1匹見たら100匹居ると思え」みたいなもので、予想以上の多くの閲覧者(またはお客さん)を失っている事にもなるのです。
そして、503エラーは一時的だからといって安心は出来ません。
SNSなどで爆発的にアクセス数が増えたのであれば本当に一時的かもしれませんが、コンスタントにアクセス数があるサイトで503エラーが出た場合、それは対策するまでずっと続くと思ったほうがいいです。
現に、私のサイトは初めて503エラーが出てから1年間放置しました笑
一年後も目立った為、対策をしたという訳ですね。(趣味ページなので重要視してなかったのです…)
サーバー側に問い合わせてみた
ネットで色々調べていると、画像を多く使っているサイトはなりやすいという情報を見つけたので、その事もふまえてザーバーに問い合わせてみました。
サーバーが側からは画像が多いようなら、1ページを複数のページに分割したり、画像を他のサーバーから読み込ませると言った方法はどうか。
との事でした。
また、503エラーが発生した日時を伝え、サーバー側に負荷があったかどうかを伝えた所、
連絡頂いた日の時間帯で著しい負荷の発生はありませんでした。その為、503エラーが発生した理由は特定できませんでした。
という回答をいただきました。
ようは、サーバー側も負荷がかかる前の自己防衛として行っている為、いちいち手間をかけてまで調べてもらえないようなので、自分でどうにかするしかないという結果に至りました。
画像を圧縮する
まず行ったのは画像を圧縮するという方法でした。
画像が多く、読み込みを終えるのに時間がかかっているというのは明らかだった為、JPGを使っていたのでgifに。
写真系のものは、http://compressjpeg.com/ja/で圧縮し上書きアップロードをしました。
画像は60~80%も削減できる場合もあるので、とても重要な作業になります。
あと、よくよく考えたらこの画像なくても大丈夫かなという画像を削除したりもしました。
結果変わらなかった…
他にもhtmlをできるだけ圧縮したり、簡略化したり、色々試みましたが、503エラーが消える事はありませんでした。
思ってた以上に、安いサーバーに負荷をかけていたのかもしれません。
サーバのプランを変更した
色々試して、もう一度サーバに問い合わせた答えがこれです。
おそらく今のアクセス数では負荷がかかりすぎているので、プラン変更をオススメします。
またまた~、容量が10GBでまだまだ余裕があるのに高いお金払って上位プランにするのはもったいない、と騙されている気分になりました。
しかし、今回問題視するべきものは、サーバの使用できる容量とは全く関係ない、転送量というものが関わっていたのです。
ついつい、初心者は容量だけ見て判断してしまうのではないでしょうか(HDDとかメモリとかも笑)。
これまで使っていたのは使用可能容量10GB、転送量40GB/日のエコノミーというプラン。
サーバーの使用できる容量というのは、画像とかhtmlとかCSSとかを収納するスペースの容量の事。
転送量とは、例えば25kbのページを誰か一人が開いた場合、サーバから閲覧者のPCに25kbのデータを転送した事になり、40GB中、25KBを消費したという事になります。
所が、私のサイトは画像を多様しており、1ページの中に300~500KBの画像を10枚…時には70枚ほど使う事もあります。
400KBの画像を30枚使用したページに、一日5000PV集まったら…60GBの容量になります。
この時点で一日の転送量40GBをゆうに超える結果となりました。
それでは503エラーが出るのは当然だったという事ですね。
また、画像がいかに大きいか、そして圧縮の必要性も伝わったのではないでしょうか。
家賃を渋ればいい暮らしは出来ません。
諦めて家をグレードアップしましょう。
という訳で、転送量100GB/日のスタンダードプランに変更してからは、今までの対策が無駄だったかのように503エラーが出る事はなくなりました。
自分のサイトがどれくらいの転送量があるのかを把握し、サイトの規模にあったサーバーを選ぶ事が大切ですね。
しっかりと安定したサイトを持つ必要がある方・会社は安さが売りのレンタルサーバーではなく、ビジネス利用も可能なプランにする事をオススメします。