トラフィックの急増に備えて


35

当社は今週、プライムタイムのテレビ番組に出演する予定であり、当社のウェブサイトには一度に約20万人の訪問者が期待できると言われています。

通常、1日あたり約100件の訪問しか得られないため、これだけのトラフィックを処理できるかどうかはわかりません。私たちはによってホストされてい1and1.co.ukます。

サイトに障害が発生するのを防ぐための予防策はありますか?


3
これを読みましたか?CloudFlareなどのサービスを有効にして、少なくとも静的アセットを処理できるようにすることをお勧めします。webmasters.stackexchange.com/questions/14394/…–
richhallstoke

10
1and1.co.ukとできるだけ早く話す必要があります。彼らはあなたのウェブサイトを、スパイクを許容する高いCPU / RAM /帯域幅比を持つVPSサービスの1つに移動できます!その後、CPU / RAMを削減してお金を節約できます
Simon Hayter

1
1&1の共有ホスティングプランを利用していますか?その場合は、できるだけ早く代替ソリューション(非常に強力なVPS、またはクラウドベースのホスティング)を検討する必要があります。共有ホスティング環境がその種のトラフィックを処理できるかどうかは非常に疑問です。
ショーン

3
以前はウェブホストでした。ほとんどのホストは、事前に知っていればこのようなスパイクをかなり簡単に処理でき、通常提供されないオプションのホスト全体を支援できます。その理由は簡単です。ハードウェアキャッシュ、追加のサーバー、負荷分散オプション、フェールオーバーオプションなどの機器を手元に持っている可能性があります。アイデアは、何でもうまく処理できるかのように見えることです。ビジネスに適しています。ほとんどの場合、これらのオプションは無料で設定されます。実際にはビジネスの通常の部分です。
closetnoc

重いサーバー負荷をテストするツールがあることを知りたいです。名前はわかりませんが、簡単に見つけることができます。設定を拡大すると、実際の人々が現れたときに自分で顔を植えることなく、制御されたテストドライブを自分自身に与えることができます:)
Martijn

回答:


26

トラフィックの多い期間中、サーバーはWebサイトへの訪問者によるすべてのリクエストを処理できる必要があります。ただし、サーバーが処理する同時接続にはいくつかの制限があります。そのため、できるだけ早くページリクエストを処理するのが最善です。

これらの状況で考慮すべきいくつかの提案があります。

アプリケーションレベルの改善:

1. HTTPリクエストを最小化して、ページの読み込み時間を短縮します。

a)すべてのJSファイルを1つの結合されたJSファイルにまとめ、すべてのCSSファイルを1つの結合されたCSSファイルにまとめます。

b)JSおよびCSSファイルを縮小して、ファイルサイズを縮小し、ダウンロードを高速化します。

c)CSSスプライトを使用する-ほとんどまたはすべての画像をスプライトに結合すると、複数の画像リクエストが1つになります。次に、background-image CSSプロパティを使用して、必要な画像のセクションを表示します。

d)遅延読み込みでイメージのダウンロードを遅らせます。これは、http要求を減らすのに役立ちます。

2.より多くの訪問が予想される軽量ページを準備します。

a)可能な限り画像やフラッシュなどの装飾的な要素を除外します。サイトナビゲーションとクロムで画像の代わりにテキストを使用し、ほとんどのコンテンツをHTMLに入れます。

b)動的なページではなく静的なHTMLページを使用します。後者はサーバーにより多くの負荷をかけます。サーバーの負荷を減らすために、動的ページの静的出力をキャッシュすることもできます。


サーバーレベルの改善:

1.ホスティングプロバイダーに相談して、サーバーのタイムアウト値を減らします(低すぎてはいけません)。

タイムアウトが短い場合、接続はすぐに解放されるため、サーバーはより多くの接続を処理できます。

2. CloudFlareなどのサードパーティサービスを使用して、静的データのキャッシュを行い、悪意のあるユーザーやDDOSなどの攻撃からWebサイトを保護します。

3.サーバーハードウェアのアップグレード-必要に応じて、物理メモリと仮想メモリをアップグレードし、I / Oとエントリプロセスの制限を増やします。あなたのホスティングプロバイダーはあなたをより良く助けることができるでしょう。

4.動的コードのキャッシュ-APCを使用してPHPオペコードをキャッシュします。

5.負荷分散 -複数の負荷分散サーバーに負荷を分散します。


  • 必要なすべてのアクションが実行されたら、今度はWebサイトが大量のトラフィックスパイクに対応できる状態になっているかどうかを確認します。

    loadimpact.comのような、シミュレートされたトラフィックで負荷テストを提供するサードパーティサービスがあります。この分析は、Webサイトが処理できる負荷と改善できる点を理解するのに役立ちます。

  • また、トラフィックのスパイク期間中は、WebサイトのバックアップcronジョブなどのCPU使用率の高い操作を避けます。


3
これらはすべてサイトに関連するものであり、優れています!しかし、200,000のリクエストが一度にサーバーにヒットしない限り、これでは十分ではありません。以前のWebホストとして、私は大きなハードウェアキャッシュを配置し、キャッシュをロードするサイトを実行するのが好きでした。また、共有されている場合でも複数のサーバーにサイトを複製し、プロキシまたはファイアウォールを使用して負荷分散を実装します。通常はそれで十分でした。ほとんどの人は、最大のボトルネックが実際にはHD I / Oであることを認識していません。メモリを増やしてApacheおよびMySQLキャッシュに使用することも非常に役立ちます。
closetnoc

2
あなたは答えを改善することを歓迎します!:)
ニヒル・スペカー

1
あなたの答えが好きです!投票しました。気分を害さないでください。Webホストの観点からいくつかのことを指摘したかっただけです。ただのコメント。スラムではありません。繰り返しますが、あなたの答えは素晴らしいです!! ホストに連絡することをお勧めします。これらのことが時々発生し、ホストができるオプションがあり、費用がかからないためです。ほとんどのホストは注意を払っています!ハードウェアがすでに設置されていたので、私にとっては簡単なプロセスでした。そのようなイベントに備えてサイトを準備するのに、それほど時間はかかりませんでした。;-) 招待ありがとう。
closetnoc

1
犯罪なし。実際、サーバーハードウェアに関する経験を実際に活用できます。
ニキル

1
私は、信頼ネットワークの研究を除き、10年以上にわたって業界から引退しました。私が好きなことの1つは、I / Oサブシステムの釘付けを減らすためにApacheとMySQLまたは同様のアプリケーションのキャッシュをアップすることです。私はここでそれをしました、そして、それは本当に働くことができます。また、バッキングストア以降のシステムのメモリが多すぎることについても警告します。スワップファイル(など)のメンテナンスは、I / O要求を根本的に増加させることがあります。スイートスポットはありますが、そのスイートスポットが何であるかはもうわかりません。あなたは私よりもはるかに専門家だと思います。;-)
closetnoc

7

まず、Cloudflareをお勧めします。無料の基本アカウントを作成して、ローカルデータセンター経由でトラフィックをルーティングし、サーバーホップの量を最小限に抑えることができます。Cloudflareはコンテンツのキャッシュにも優れており、DDOS保護を備えています。

それ以外は、サービスレイヤーから脂肪を削除してみてください。コードのボトルネックになっている過度に肥大化したデータベースクエリや、単純化できるCPU集中型のロジックがないことを確認してください。

また、データベースクエリをキャッシュしようとします。クエリキャッシュの優れたオプションには、RedisまたはMemcacheがあります。コンパイルされていない言語を使用している場合、OpCachingも考慮事項の1つです。

しかし、おそらく最も重要なことは、静的コンテンツ(つまり、css、js、および画像)を可能な限り最適化することです。すべてのJavascriptを縮小し、可能であればすべてを1つのファイルに結合します。サイトに含まれる各ファイルは、エンドユーザーに到達するために複数のサーバーホップを作成する必要があることに注意してください。

画像を圧縮することで節約できる帯域幅とロード時間を過小評価しないでください!

最後に、New Relicなどのツールを使用してパフォーマンスを監視することを検討してください。

幸運を祈ります!!

出典:Alexaによると、英国で12番目に人気のあるサイトの開発者の1人。


5

サイトの負荷テストを検討してください。JMeterThe GrinderGatlingなどの無料のツールがあり、サイトへの多数の訪問者をシミュレートできます。

大量のトラフィックの影響を事前にテストすることで、行った調整が効果的であるかどうかを判断し、効果がない場合はさらに調整することができます。


3

1and1を使用している場合は、おそらく安価なホスティングを探しているでしょう。安価なホスティングは、1つのボックスの下ですべてを行う傾向があることを意味します。ホスティングの主な問題点は、すべてを同じボックスでホストする場合、リソースをサイトの重要な部分に分割することです。

  • Webサーバー(Apache、Nginxなど)
  • データベース(MySQL、PostGreSQLなど)

また、1and1であるため、PleskやcPanelなどのコントロールパネルを使用している可能性が高くなります。つまり、リソースを奪い合う物の層が余分にあることを意味します。そして、あなたのcoの最後の爪?あなたは多くのリソースを持っていません。おそらく1つのCPU(または仮想CPU)とごくわずかなRAMしかありません(2 GBを超えると驚くでしょう)。

1and1を廃止したとき、スケーラブルなホスティングプロバイダー(この場合はAmazon Web Services)を使用し、以前はできなかったいくつかのことを行いました

  1. Amazonにはデータベース(RDS)の独自のインスタンスがあるため、データベースには息をするリソースがあります。ほとんどのRDBMSシステムはRAM上で存続し、呼吸しますが、それは十分に得られるものでした。これで、I / Oの高いSSDもプロビジョニングできるようになり、他のDBチョークポイント(データの書き込み)の痛みが軽減されます。
  2. 2台のWebサーバーを備えたロードバランサーを取得しました。DBのバックエンドが非常に大きいため、ハイエンドのフロントエンドは必要なかったため、2台のローエンドサーバーがありました。
  3. 完全に構成されたマシンをオンデマンドで起動できるものに切り替えました。ChefやPuppetのようなものを使用すると、新しいWebサーバーを簡単に追加でき、適切に行うとエンドユーザーに対して100%透過的になります。AWSにはOpsworksもあるため、スクリプトを直接AWSに構築できます。
  4. オンデマンドでインスタンスサイズを変更します。これは私たちにとって重要な作品です。DBが動かなくなった場合は、数分でそれを停止し、より大きなデータベースとして再起動できます。はい、それはダウンタイムを伴いますが、数分のダウンタイムは恐ろしく遅いサイトの時間よりも優れています。完全にダウンタイムが怖いですか?ウィングにリードレプリカを保持し、それをダウンさせて、より大きなインスタンスに切り替え、マスターに昇格させると、追加のマシンのコストでダウンタイムを回避できます。

AWSは町で唯一のゲーム(Azure、Rackspaceなど)ではありませんが、1and1があなたの需要に合わせて拡張できることを確認してください。


1

ISPに問い合わせて、帯域幅に上限があるかどうかを確認してください。予想されるトラフィック量に対して帯域幅が不十分な場合は、ホスティングプランをアップグレードします。訪問者に「帯域幅制限を超えました」というメッセージを表示したくない場合。


1

私の個人的な経験から、最高のVPSでも限界があることを知っています。私は本当の素人のここに行きます。

スポーツWebサイトの1つがVPSでホストされていました。パキスタンとインドの試合中、70,000件以上のヒットがありました。Inmotinghosting VPSには4GBのRAMと2.GHzの2 GHz処理、1TBの帯域幅、SSDストレージ、その他の付属品が搭載されていました。Cloudflareの有料版も有効にしました。

試合のちょうど途中で、ウェブサイトはダウンしました。試合中にライブになることはなく、潜在的に70,000人以上の訪問者を失いました。後で帯域幅が消費され、ソースホストが機能していなければ、CDNはほとんど役に立たないことがわかりました。

レッスン:VPSを取得してCloudflareのようなCNDにチューニングするとともに、ページサイズを最小化します。小さいほど良い。トラフィックを処理する際に非常に便利なページキャッシングとコードミニフィケーションを利用できます。


1

「一度にすべて」を十分に定義していない。30分で200,000人のユニークビジターを見ているとします。これは1秒あたり111リクエストであり、クリックして他のページを開くビジターを考慮していません(これは必要ですか?)。

私が最初にやることは、同じ量のトラフィックを処理する人々のGoogleストーリーです。多くの人が自分の経験についてブログに書いて、他の人を助けます。共有ホスティングで誰かがそれをやっているという話を見つけるのは非常に難しいことに気付くでしょう、そしてそれには理由があります。手始めに、視聴者に最も近いデータセンターを使用して、Digital OceanやAmazon Web Servicesなどのソリューションを検討してください。そして、無料のアカウントであっても、すべての静的リソースをCloudFlareにオフロードすることは素晴らしいアイデアです。

それとは別に、動的であると仮定して、ページの上部と下部にタイミングスクリプトを追加して、コードをテストします。数字に関する私の仮定が正しいと仮定すると、許容可能なパフォーマンスを維持するために、10ミリ秒以内に各ページを提供できる必要があります。デフォルトですべてのリクエストをSSL経由で処理している場合、ストームが通過する間、数日間それを無効にします。

また、200,000は非常に恐ろしい音に聞こえますが、あまり怖がる必要はないことを覚えておいてください(多少はあるべきですが)。たとえば、ペーパーマガジンがキムカーダシアンのNSFW写真を発行したとき、この記事(SFW)によると、負荷を処理するのに4台の中型のWebサーバーとAmazon ELBだけが必要でした。現在の設定で処理できるとは思いませんが、48個のコアがそれぞれ独自の小型原子力発電機で駆動される16台のWebサーバーは必ずしも必要ではありません。


1

この古いが非常に良い質問を知っていて、数年前に私が主題について良い情報を持っていたなら...

テレビネットワークに掲載される(学校活動に関連する)サイトが時々あります。非常に厳しい予算で運営しているため、「負荷分散」がソリューションです。VPSボックスは最近非常に安くなっている可能性があり、2〜3個のコンテンツをミラーリングまたは複製するだけです。

この記事を見て、「ラウンドロビン」について読んでください。

負荷テストの詳細については、こちらをご覧ください

スパイクの処理を始めたとき、コンテンツを2〜3個のVPSボックスに配置し、NSをレジストラ設定に配置しました。



0

ウェブサイトの書き換え、プロバイダーの切り替え、コンテンツのCDNへの移行を1週間以内に行ってください。

他の回答から気付いたかもしれませんが、これらはトラフィックの大幅な増加に備えてサイトを準備するために必要な最小限のものです。現在1and1.co.ukで実行している場合、おそらくネットワークエンジニア、DBA、プログラマー、フロントエンドオプティマイザーの強力なチームはありません。

それは起こりそうにないですよね?

ショッピングカートを実行するか、静的コンテンツを使用して実装できるかどうか、Webサイトで何をするかについては説明していません。後者の場合、サイト全体を静的ファイルにスクレイピングし、通常のサイトの代わりに公開すると、津波を生き延びることができます(最初に現在のバージョンをバックアップしてください)。

また、1and1と話す必要があります(クレジットカードを手に入れて)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.