47

多くの場合、人々は「重負荷」についての(最適化とパフォーマンスに関連する)質問と回答で話します。

私はこれを、典型的なサーバー上の通常のWebアプリケーション(SOとそのかなり小さなインフラストラクチャを例にとる)のコンテキストで、1分あたりのリクエスト数で定量化しようとしています(単純化してデータベースの速度を上げるため)など)。

「CPUが最大になる場所」などではなく、呼び数/範囲を探しています。大まかな概算は素晴らしいでしょう(例えば> 5000 /分)。ありがとうございました!

4

5 に答える 5

48

ハードウェアの負荷測定(CPU、メモリ、IO使用率)が不要な場合、これに対する適切な答えは、重い負荷とは、必要な最大量以上の時間単位あたりの要求の量であるということだと思います。時間単位あたりのリクエスト。

必要な最大リクエスト数は、お客様またはアーキテクチャ全体を担当する人との間で定義されたものです。

Xは、アプリケーションに必要な最大負荷であると言います。私はこのようなものが答えに近いと思います:

0<軽負荷<X/2<通常負荷<2X/3<高負荷<X<=重負荷

薄い空気から単一の番号を持つことは、それがあなたのアプリケーションとは何の関係もないということです。そして、重い負荷が何であるかは、アプリケーションが実行することになっていることに完全に、絶対に、不可避的に結びついています。

1秒あたり200リクエストは、小さなWebサーバーをビジー状態に保つ負荷ですが(1分あたり約12000)。

于 2009-08-24T00:40:47.917 に答える
18

1秒あたり数百のリクエスト。

ほとんどのサーバーで開いている接続の初期状態の数は、通常、 1秒あたり256のエルゴ256リクエスト数とほぼ同じです。2000-5000ping要求または500-1000軽量要求の場合はにプッシュできます。それをさらに高くすることは非常に困難であり、ネットワーク、ハードウェア、OS、サーバーアプリケーション、およびユーザーアプリケーションのすべての変更が必要です(問題10kを参照)。

HDDのシーク速度+レイテンシーは約1〜10ミリ秒ですが、SSDの場合は約1〜10ミリ秒0.1-1 msです。つまり、100-100 000IOPSです。100 000最上位値として取り上げましょう( SSDの結果的な書き込み

通常、接続は少なくとも1 x latency value数ミリ秒間開いたままになります。クライアントからサーバーへの遅延がそれを下回ることはめったにないため、 = IOPS50-100 msのみが新しい接続を作成できます。100 000/502000

したがって、2000さまざまなクライアントからの1秒あたりのping要求は、通常のサーバーの基本的な上限です。RAMディスクを使用するか、SSDを追加してIOPS数を増やす、リクエストをルーティングしてpingを減らす、OSを変更/変更してカーネルのオーバーヘッドを減らすなど、改善できます。通常、同じクライアント(接続)からのリクエストが多いため、さらに高くなります。限られた数のクライアント。良好な状態では、数十万に達する可能性があります

一方、ping、アプリケーションの実行時間、OS、およびハードウェアの欠陥が多いと、基本値が1秒あたり数百の要求に簡単に減少する可能性があります。また、一般的なWebサーバーとアプリケーションは通常、高レベルの最適化にはあまり適していません。そのため、VinkoVrsalovicの提案200はかなり現実的です。

于 2016-02-05T13:29:24.257 に答える
6

これは、単純な要求/分数で答えることができる簡単な質問ではありません。

テレコムセクターでは、パフォーマンステストを頻繁に行い、1秒あたりの大量の呼び出しの実行をシミュレートして、制限を見つけようとします。サーバーが追いつかなくなるまで、通話速度を上げ続けます。

したがって、それはサーバーとそれが処理できるものに依存します。それはあなたの視点にもよる。たとえば、古い386はわずか50リクエスト/分しか処理できない可能性があります。私はそれを軽負荷と呼ぶでしょう。ただし、高スペックのサーバーは60000リクエスト/分を処理できる可能性があります。これは単なる推測です。Apacheがこれを実行できるかどうかはわかりません。私たちの通信ソフトウェアは確かにできます。

サーバーの観点からこれに答えるのが最善だと思います。非常に重い負荷とは、サーバーが処理できる能力の10%以内に到達したときに、数分または数十分にわたって持続することです。15%以内の重負荷。

于 2009-08-24T00:55:57.767 に答える
4

負荷は単に単位時間あたりのリクエストの問題ではないため、答えるのは難しいです。それは、それらの要求が何をしているか、そしてそれらがどのように実装されているかに依存します。

たとえば、書き込みよりも読み取りが多いほど、負荷が軽くなる可能性があります。

書き込みの非同期処理は、同期処理が完了するのを待つ必要があるよりも負荷が軽いことを意味する場合があります。

極端な例の1つは、毎日何十億もの取引を処理する株取引システムです。NYSEまたはNASDAQの一般的なボリュームを見て、それを使用して1分あたりの高い値を見積もります。

取引日の2BトランザクションがNASDAQの代表であるとしましょう。市場は午前9時に開き、午後4時に閉じるので、7時間*3600秒/時間=25200秒になります。これにより、平均20Bトランザクション/25200秒=1秒あたり79,365トランザクションになります。これは、実際、非常に高い負荷です。明らかに多くのサーバーを使用しているため、サーバーあたりの負荷を把握するには、その数が必要になります。

SOが優れたベンチマークと見なすことができる場合は、メタでのボリュームについて質問することができます。

于 2009-08-24T00:29:34.513 に答える
2

重負荷は、要件に記載されているものよりも大きいものです。何が重い負荷になるかを判断するには、アプリケーションがどのように使用されるかを知る必要があります。そうしないと、食料品の購入にのみ使用されるフェラーリを構築してしまう可能性があります。素晴らしい経験ですが、リソースの浪費です。

于 2018-12-19T11:20:35.580 に答える