web-dev-qa-db-ja.com

サイトが混雑しているときに訪問者をリダイレクトする

今週、ウェブサイトへのトラフィックが大幅に増加することが予想されます。サイトが過負荷になった場合(つまり、訪問者に503エラーが発生した場合)、訪問者を別のWebアドレスにリダイレクトしたいと思います。これをどうやってやるの?

7
SamTheMan

トラフィックが多いためにWebサイトが混雑している場合、リダイレクトの最善の方法はカスタムエラードキュメントを使用することです。そのため、ユーザーが503エラーコードを取得すると、サーバーはユーザーが定義したカスタムエラードキュメントページに訪問者をリダイレクトします。

サーバーごとにエラードキュメントページをカスタマイズする方法はいくつかあります。

1。 Apacheサーバーの場合、.htaccessファイルに次のコードを追加します。

ErrorDocument 503 http://example.com/maintenance.html

2。 IIS 7サーバーの場合、web.configに次のコードを追加します

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
        <remove statusCode="503" />
        <error statusCode="503" responseMode="Redirect" 
               path="http://example.com/maintenance.htm" />
    </httpErrors>
</system.webServer>

参照 web.configのCustomError

3。 Tomcat 7サーバーの場合、WEB-INF/web.xmlファイルに次のコードを追加します。

<error-page>
    <error-code>503</error-code>
    <location>/Error.jsp</location>
</error-page>

<error-page>
    <exception-type>Java.lang.Exception</exception-type>
    <location>/Error.jsp</location>
</error-page>

参照 Tomcat 7のカスタムエラーページ

10
Nikhil Supekar

2番目に悪い結果を目指してaimingのようです。急増が予想される場合は、何かをする時間があります。

  • コード内キャッシュを実装します(簡単な場合もありますが、正しくなるまで時間がかかる場合があります)
  • 静的ファイル(jpegoptimoptipngmore-cssなど)を最適化して、帯域幅を減らし、すべてのユーザーの速度を上げます。
  • 静的なものをCDNに移動して、ネットワークからこれらの要求を完全に削除します。
  • すべてが静的な場合は、サイトをさらにいくつかのコンピューターにコピーし、ロードバランサーを使用してサイトを1つのIPの下に維持します。高価に聞こえますが、多くのVPSプロバイダーがそのようなセットアップを週に約20ドルで提供します。
  • または、CloudFlare(など)フロントエンドキャッシングサービスを見てください。初心者でもこれらを数分で実装できますが、非常に動的なサイトがある場合、それだけではあまり役に立ちません。

準備を整えておくと、万が一故障しても、ユーザーが望むものを確実に手に入れることができるように、すべてのことを実行できます初回。失敗を計画することは悪い習慣ではありませんが、まず失敗を回避するためのオプションを見てください!

しかし、はい、最良の標準オプション(既に実装されているはずです)は、エラーページをカスタマイズして、何かが間違っていることを人々に知らせることです。私はほとんどの人がこれらに非常に否定的に反応することを指摘する必要があります。メッセージが「後で戻って来てください」である場合、返されるのは一部の一部のみです。

繰り返しになりますが、これはサイトのホスト方法を再検討する理想的な機会であり、障害が発生してから1時間以内に優れたハードウェアに交換する[実践]計画が他にない場合です。

5
Oli

いくつかのレベルでできることがあります:

ネットワークレベル

  1. ネットワークハードウェア:ロードバランサーをインストールし、その後ろにサーバーを追加します。これにより、既存のセットアップをかなり簡単に実行できますが、おそらく、時間枠内でセットアップするのにかなりの費用がかかります(ホスティングプロバイダーのサポートレベルによって異なります)

  2. 仮想ハードウェア:負荷分散が組み込まれたクラウドベースのシステムに移行します。これにより、オプション1の利点が得られますが、ホストに多大なセットアップコストがかかることはありません(使用した分のみお支払いください)あなたの側で設定します。

これらはおそらくこれに対処するための「最良の」オプションであり、非常に試行され信頼されていますが、金銭的なコストがかかります-特にポイント1については。

ただし、「私たちのサーバーは対処できない」という「最悪の場合」のシナリオを処理するように両方を構成できます。しかし、ここに少しの情報があります。

ソフトウェアレベル

他の回答に記載されている方法に加えて、ほとんどのサーバーではさまざまな方法でエラーページを設定できます。通常、これらはサイト上のページですが、ページへのリダイレクトを発行することもできます。別のサーバーも同様です。

たとえば、IISでは、「302リダイレクトで応答する」というエラー応答を作成できます。これは、まったく別のサーバー上のURLにすることができます。これは、.netエラーページレベルまたはIISエラーレベル:

。ネット

<customErrors mode="RemoteOnly">
  <remove statusCode="503" />
  <error redirect="htp://www.example.com/sitedown.html" statusCode="503" />
</customErrors>

IIS

Setting a redirect error in IIS

3

Apacheを使用している場合:ルートフォルダーで「htaccess.txt」または「.htaccess」という名前のファイルを検索します。次の行を追加します。

ErrorDocument 503 http://www.example.com/customhtml.html

訪問者はcustomhtml.htmlにリダイレクトされます。 HTMLコードに「別のWebアドレス」のiframeを追加できます。

0
Mithra

この問題を解決するために、複数のサーバーを使用することをお勧めします。この問題では、サーバーが接続された形式で接続されます。 1台のサーバーの負荷が高くなった場合、トラフィックは2台目のサーバーに転送されます。

0
Himanshu Singla