5

現在展開されている Web サーバーでは、そのパフォーマンスの一般的な制限は何ですか?

意味のある答えは、1 秒あたり 100、1,000、10,000、100,000、または 1,000,000 リクエストのいずれかになると思いますが、今日はどれが正しいでしょうか? 5年前に正しいのはどれ? 5年後にはどれが期待できますか? (つまり、帯域幅、ディスク パフォーマンス、CPU パフォーマンスなどの傾向が回答にどのように影響するか)

重要な場合は、HTTP over TCP がアクセス プロトコルであるという事実を考慮する必要があります。OS、サーバー言語、およびファイルシステムの効果は、最良の組み合わせであると想定する必要があります。

ディスクには、静的に提供される小さな一意のファイルが多数含まれていると想定します。メモリ キャッシュの影響を排除するつもりであり、その CPU 時間は主にネットワーク/プロトコル情報を組み立てるために使用されます。これらの仮定は、リクエストがある程度の帯域幅、CPU 時間、およびディスク アクセスを必要とする「最悪のケース」の見積もりに向けて回答を偏らせることを目的としています。

私は、桁違いに正確なものだけを探しています。

4

9 に答える 9

14

http://www.kegel.com/c10k.htmlを読んでください。'c10k' とタグ付けされたStackOverflow の質問もお読みください。C10K は、10,000 の同時クライアントを表します。

簡単に言えば、制限は帯域幅でも CPU でもありません。並行性です。

于 2009-03-11T16:29:28.460 に答える
4

6 年前、私は 8 プロセッサの Windows Server 2003 ボックスが静的コンテンツに対して 1秒あたり 100,000 の要求を処理するのを見ました。そのボックスには 8 つのギガビット イーサネット カードがあり、それぞれが別のサブネット上にありました。制限要因はネットワーク帯域幅でした。本当に巨大なパイプがあっても、これほど多くのコンテンツをインターネット経由で提供する方法はありません。

実際には、純粋に静的なコンテンツの場合、控えめなボックスでもネットワーク接続が飽和する可能性があります。

動的コンテンツの場合、簡単な答えはありません。CPU 使用率、ディスク I/O、バックエンド データベースのレイテンシ、ワーカー スレッドの不足、コンテキストの切り替えの多さなどの原因が考えられます。

ボトルネックがどこにあるかを見つけるには、アプリケーションを測定する必要があります。フレームワークにある場合もあれば、アプリケーション ロジックにある場合もあります。ワークロードが変化すると、おそらく変化します。

于 2009-03-16T06:38:46.493 に答える
2

ファイルをメモリにキャッシュできない場合は、ディスクのシーク時間が制限要因になり、パフォーマンスが1000リクエスト/秒未満に制限される可能性があります。これは、ソリッドステートディスクを使用するときに改善される可能性があります。

于 2009-03-11T21:43:25.787 に答える
2

1 秒あたり 100、1,000、10,000、100,000、または 1,000,000 リクエストですが、現在はどちらが正しいでしょうか?

このテストは控えめな i3 ラップトップで行われましたが、Varnish、ATS (Apache Traffic Server)、Nginx、Lighttpd などを確認しました。

http://nbonvin.wordpress.com/2011/03/24/serving-small-static-files-which-server-to-use/

興味深い点は、ハイエンドの 8 コア サーバーを使用すると、ほとんどのサーバー (Apache、Cherokee、Litespeed、Lighttpd、Nginx、G-WAN) がほとんどブーストされないことです。

http://www.rootusers.com/web-server-performance-benchmark/

ネットワークがボトルネックになるのを避けるために、テストは localhost で行われたため、オプションを調整しない限り、スケールしないカーネルに問題があります。

したがって、あなたの質問に答えるために、進捗マージンはサーバーが IO を処理する方法にあります。より優れたデータ構造を使用する必要があります (待機なし)。

于 2011-08-04T19:35:59.050 に答える
2

それは本当にあなたが提供しているものに依存すると思います。

HTML を動的にレンダリングする Web アプリケーションを提供している場合、CPU が最も消費されます。

比較的少数の静的アイテムを何度も提供している場合、帯域幅の問題が発生する可能性があります (静的ファイル自体がメモリ内にある可能性が高いため)。

多数の静的アイテムを提供している場合、最初にディスクの制限に達する可能性があります (ファイルのシークと読み取り)。

于 2009-03-11T16:30:18.940 に答える
1

あなたの質問に答えるには、変数が多すぎると思います。

どのプロセッサ、どの速度、どのキャッシュ、どのチップセット、どのディスク インターフェイス、どのスピンドル速度、どのネットワーク カード、どのように構成されているか、リストは膨大です。反対側から問題にアプローチする必要があると思います...

「これが私がやりたいこと、達成したいことです。そのためには何が必要ですか?」

于 2009-03-11T16:29:11.767 に答える
0

データベースを使用するWebアプリケーションでは、まったく新しい範囲の最適化のニーズも開きます。

インデックス、クエリ最適化など

静的ファイルの場合、アプリケーションはそれらをメモリにキャッシュしますか?

などなどなど

于 2009-03-11T17:22:10.937 に答える
0

これは、CPU コアとは何か、ディスクの速度とは何かによって異なります。「太い」「中」サイズのホスティング会社のパイプとは何ですか。ウェブサーバーとは?

質問が一般的すぎる

サーバーをデプロイし、 http://jmeter.apache.org/などのツールを使用してテストし、どのように動作するかを確認してください。

于 2009-03-11T16:29:46.367 に答える
0

ここでは、OS、サーバー言語、およびファイルシステムの影響が変数です。それらを取り除くと、オーバーヘッドのない TCP ソケットが残ります。

その時点では、実際にはサーバーのパフォーマンスの問題ではなく、ネットワークの問題です。オーバーヘッドのない TCP ソケットを使用すると、制限に達する可能性が最も高いのは、ファイアウォールまたはネットワーク スイッチで、同時に処理できる接続の数です。

于 2009-03-11T16:30:03.247 に答える