同時アクセスが多いように Web サイトを最適化するにはどうすればよいですか?
たとえば、ダブル 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
ちょっと話題が大きくて

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
