アクセスが集中してサイトが落ちるとき、本当は何が起きているのか
「昨日まで普通に動いていたのに、セールを始めたとたんサイトが真っ白になった」。この記事は、そうなってしまった方と、これからそうなりそうな方の両方に向けて書いています。
まず、いま出ているエラーの意味
アクセスが集中したときによく出るのは、次の3つです。どれも「サーバーが壊れた」わけではありません。
503(Service Unavailable)は、サーバーが「いま受け付けられません」と自分から答えている状態です。レンタルサーバーは、1つのサイトが混み合ったときに他のお客様まで巻き込まないよう、同時に処理する数に上限を設けています。その上限に達すると、あふれた分に503を返します。
504(Gateway Timeout)は、処理が終わるのを待ちきれずに時間切れになった状態。502(Bad Gateway)は、その手前で応答そのものが返ってこなくなった状態です。
エックスサーバーの案内でも、503の原因として「アクセスが多くサーバーに負荷がかかっている」「同時接続数が増えやすい構造になっている」ことが挙げられています。つまり訪問者の数そのものではなく、同時に処理を求められた数が問題なのです。
ここがいちばん誤解されています
1日1万人が来ても、時間が散らばっていれば何も起きません。逆に、1分間に500人が同時に来れば、1日の合計が2,000人でも落ちます。「1日何人まで耐えられるか」ではなく「同時に何人まで耐えられるか」で考えてください。
よくある対処法と、その限界
1. サーバーのプランを上げる
最初に思いつく方法で、効果もあります。ただし2つの弱点があります。ひとつは間に合わないこと。移行には手間と時間がかかり、明日のセールには使えません。もうひとつは山に合わせて払い続けること。年に数回の山のために、365日ぶんの高い料金を払うことになります。
2. CDN(キャッシュ)を使う
画像やページを事前に複製して配る仕組みで、閲覧が中心のサイトにはよく効きます。ただし、カートに入れる・ログインする・決済するといった一人ひとり違う処理は複製できません。販売の山で本当に苦しいのはそこなので、CDNだけでは守り切れないことがあります。
3. 販売時刻をずらす、告知を分散する
効果はありますが、テレビ放映のように時刻を選べない山には使えません。
もうひとつの考え方:受け入れる人数を、こちら側で決める
サーバーを大きくするのではなく、入ってくる人数のほうを調整する方法があります。それが仮想待合室(順番待ちページ)です。
アクセスが増えたとき、あふれた分の訪問者を順番待ちのページにご案内し、サイトが処理しきれる人数だけを順に通します。空いた分だけ次の方が入るので、サイトは常に「ちょうど耐えられる混み具合」で動き続けます。
エラー画面と順番待ちページの違いは、決定的です。503を見た方はほぼ戻ってきませんが、「あと120人でご案内します」と表示されていれば、多くの方はそのまま待ってくださいます。失注が、行列に変わるということです。
待たせることになりませんか?
ふだんは何も表示されません。混雑していないときは、訪問者は待合室の存在にすら気づかずそのままサイトに入ります。行列が出るのは、放っておけば落ちていた場面だけです。
今日からできる順番
- いまの上限を知る。ご契約のサーバー会社のマニュアルで、同時接続数の考え方を確認します。数字が公開されていない場合は、サポートに「同時アクセスが増えたときの挙動」を問い合わせると教えてもらえることがあります。
- 山の形を想像する。次に山が来るのはいつか(セール開始の瞬間か、メディア掲載の直後か)、何分間の話かを書き出します。
- 山だけを平らにする手を用意する。恒常的にアクセスが多いならプラン増強、短時間に集中する山なら仮想待合室が向いています。
待合室ナラブルは、この「短時間の山」に絞った道具です。WordPressならファイルを2つ置いて設定を1行足すだけ、作業時間は約5分。データベースにもデザインにも手を加えません。年に数回だけ必要な方には、24時間だけ使える1日券もご用意しています。
次の山が来る前に、実際の順番待ちページを体験してみてください。その場で30秒です。
行列を体験する