アクセス集中対策

アクセスが集中してサイトが落ちるとき、本当は何が起きているのか

「昨日まで普通に動いていたのに、セールを始めたとたんサイトが真っ白になった」。この記事は、そうなってしまった方と、これからそうなりそうな方の両方に向けて書いています。

まず、いま出ているエラーの意味

アクセスが集中したときによく出るのは、次の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人でご案内します」と表示されていれば、多くの方はそのまま待ってくださいます。失注が、行列に変わるということです。

待たせることになりませんか?

ふだんは何も表示されません。混雑していないときは、訪問者は待合室の存在にすら気づかずそのままサイトに入ります。行列が出るのは、放っておけば落ちていた場面だけです。

今日からできる順番

  1. いまの上限を知る。ご契約のサーバー会社のマニュアルで、同時接続数の考え方を確認します。数字が公開されていない場合は、サポートに「同時アクセスが増えたときの挙動」を問い合わせると教えてもらえることがあります。
  2. 山の形を想像する。次に山が来るのはいつか(セール開始の瞬間か、メディア掲載の直後か)、何分間の話かを書き出します。
  3. 山だけを平らにする手を用意する。恒常的にアクセスが多いならプラン増強、短時間に集中する山なら仮想待合室が向いています。

待合室ナラブルは、この「短時間の山」に絞った道具です。WordPressならファイルを2つ置いて設定を1行足すだけ、作業時間は約5分。データベースにもデザインにも手を加えません。年に数回だけ必要な方には、24時間だけ使える1日券もご用意しています。

次の山が来る前に、実際の順番待ちページを体験してみてください。その場で30秒です。

行列を体験する