ホームページ  >  記事  >  バックエンド開発  >  同時アクセスが多いように Web サイトを最適化するにはどうすればよいですか?

同時アクセスが多いように Web サイトを最適化するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-17 08:31:261187ブラウズ

たとえば、ダブル 11 で突然大渋滞が発生しました

返信内容:

高い同時アクセス、バックグラウンド アーキテクチャが鍵となります。

同時アクセスが多い問題を解決または改善するには、いくつかのアイデアがあります:
1. Squid または Varnish をキャッシュ プロキシとして使用し、頻繁にアクセスされる画像やその他の静的コンテンツをキャッシュして、アクセスを向上させます。速度;
2. CDN コンテンツ配信ネットワークを使用して、メイン サーバーの負荷を軽減します (CDN 関連のコンテンツを添付します。CDN は、ネットワーク全体にノード サーバーを配置することによって形成される、既存のインターネットに基づくインテリジェントな仮想ネットワークの層です)。システムは、ネットワークトラフィック、各ノードの接続と負荷ステータス、ユーザーまでの距離、応答時間などの包括的な情報に基づいて、ユーザーのリクエストをユーザーに最も近いユーザーにリアルタイムでリダイレクトできます。
3. 使用します。 LVS サーバーの負荷分散、LVS サーバー Keepalived と組み合わせて高可用性を実現
4. LVS は、Nginx で改良された Taobao の Tnginx など、Nginx との負荷分散にも使用できます。
5. 高度なビューの作成など、DNS サーバーでの作業も可能です。これにより、さまざまなネットワーク セグメントからの Web サーバーへのアクセス速度の問題を解決できます。
6.データベース IO など、まだ IO にあります。ストレージは、データが失われないようにする必要がある一方で、RAID や LVM などのパフォーマンスを保証する必要があります。ストレージは、一連のストレージ (GFS、OCFS など) 間のデータ同期も考慮する必要があります。これを達成するには)、データのバックアップなど; データベースがある場合は、クエリ キャッシュなどの使用を検討してください。私もこれについて勉強中ですが、拡張すべきことがたくさんあります。
7. プログラムも最適化できます。たとえば、Java Web プログラムで Hibernate フレームワークを使用している場合、クエリはキャッシュされます。
8. ハードウェア層: 帯域幅の増加、RPM パフォーマンスの高いハード ドライブの購入など。 🎜>
最後に、@ Yang Yi が述べたように、
淘宝網は一夜にして大量の同時実行を達成できるわけではなく、段階的に達成されます。淘宝網がいつ設立され、現在までどのくらいの期間発展してきたかを考えてみてください。 。ダブルイレブンを生き残るためには、この点でのアリババの躍進を賞賛する必要があります。
参照: コンテンツ配信ネットワーク_百度百科
この種の問題は、一言で明確に説明することはできません。結局のところ、実際のシナリオはビジネスごとに異なりますしかし、基本的な考え方はほぼ同じであり、ほぼすべてが段階的に拡張および進化しています
CDN は動的であり、静的分離キャッシュ負荷分散と高可用性...ほぼすべて これらなしでは生きていけません @文国兵の答えを補足するために、この偉大なマスターはサーバーアーキテクチャレベルから比較的完全な答えを与えてくれました。
特定のサーバーレベルでの高い同時実行処理について話しましょう。
1. キャッシュ メカニズムには、ページ キャッシュ (Squid)、データ キャッシュ (memcache)、クエリ キャッシュ、コンパイル キャッシュなど、さまざまな種類があります (PHP はコンパイル時にコンパイル キャッシュを持つスクリプト言語です)。
2. データベース IO が最大の問題であるため、最初にデータをメモリに書き込み、次に定期的にハードディスクに書き込むという NOSQL ソリューションがあります。
3. プログラムの最適化、実行効率の向上、使用。より良いアルゴリズムなど。 (階層化を使用するのは、プログラムごとに得意なことが異なるためです。たとえば、中間層には JAVA が適しており、最下層には C++ が適しており、中間層には実行効率を高めることができる今人気の Node.js があります。マルチスレッド、およびいくつかのセキュリティ問題)
4. キュー システム。一部のデータは、受信後すぐに処理する必要はありません。キュー (先入れ先出し) を作成し、処理を遅らせます。
答えが間違っていたら、まだ勉強不足なのでご容赦ください。 質問が大きすぎます。Double 11 のようなトラフィックに遭遇する Web サイトはほとんどありません。

これについて一般的に言えば、ボトルネックを見つけて最適化し、新しいボトルネックを見つけて最適化し続けることです。このサイクルが繰り返されます。タオバオでもこうやってやってくる
ボトルネックはどこですか?

ステートレスというのは簡単に言うと、マシン上に各種キャッシュを追加するだけでOKです。ステータスのスケールアップやスケールアウトに関しては、一貫性やダウングレード(受信コメントの確認の削除など)など、特定の犠牲を適切に払う必要があります。
1 すでにウェブサイトをお持ちのようですが、どの言語で開発されていますか?どのような環境に導入されますか?サーバーは何台ありますか?さまざまな構成とは何ですか?
2 パフォーマンスの問題が発生したようです。パフォーマンスは何ですか?ブラウザが固まってしまった?クラッシュしますか?
3 「例えばダブル11で突然大渋滞が発生する」なんてことはあり得ません。ダブル11イベントを何年もやってるのに、毎年撲殺されていませんか?この問題を解決する唯一の方法は、ダブル11の価格を上げることです。

テクノロジーは万能だと言いますが、毎年予想を超える莫大なコストとトラフィックに誰もが不意を突かれています。独自の Web サイトを最適化するときは、まずこの外部要因を回避する必要があります。そうすれば、技術的な問題は問題になりません。 ME: js、css、img にクラウド ストレージを使用し、Web プログラムのキャッシュを最適化し、デザイン的には優れているが実際の使用にはあまり興味のない Web サイト上の機能を削減し、ソリッド ステート ドライブに置き換えて、より優れたハードウェアをインストールします。 ダブル11を経験したばかりの者として、一言付け加えさせていただきます。
実際、これらはウェブサイトのテクノロジーであり、上でより明確に説明しています。
ダブル 11 の前に複数回のオンライン ストレス テスト訓練が行われる予定であり、各システムのパフォーマンスが達成できる QPS については明確に理解していることを付け加えておきたいと思います。
その後、これまでの経験に基づいて、サーバー容量を通常のピーク値の 10 倍近くに拡張します。
さまざまなダウングレード プランもあります。重要な瞬間には、ボタン 1 つで一連のダウングレード機能を実行できます。
ダブル 11 の日には、各システムの水位 (つまり、現在の QPS/限界 QPS) を確認できる大型スクリーンがあります。
それでも、12 時になるとすぐに、瞬間的な膨大な量が常に存在し、その場でいくつかのシステムが麻痺しました... 中国語の場合は、この本を読むことができます ---大規模 Web サイトの技術アーキテクチャ_基本原則と事例分析_Li Zhihui ちょっと話題が大きくて

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。