2

数週間前に、プログラミングの割り当てに単純なマルチスレッドHTTPサーバーを実装しました。この割り当てでは、ユーザーはブラウザーを介してドキュメントサイズを指定し(250バイトの長さのドキュメントの場合はlocalhost:port / 250など)、私のプログラムはそのサイズのhtmlページを作成しました。

そして、apachebenchと呼ばれるベンチマークツールを使用してパフォーマンスをテストしました。パフォーマンスは、ほとんどの場合、マルチスレッドプログラムに期待したものでした。

しかし、興味深いテスト結果があり、しばらくの間私を悩ませています。リクエストの転送速度は、リクエストサイズが大きくなると劇的に低下します。これは、このコマンドライン引数を使用したapachebenchテスト結果のサンプルです。

ab -n 1000 http:// localhost:port / RequestSize

RequestSize TX
(バイト)(KB /秒)
70 212,21
150 268,75
250 364,58
350 447,23
500 497,36
650 496,73
800 491,48
1000 432,63
1250 405,17
1750 347,19
3000 241,95
5000 161,46
10000 84,58
20000 44,05

並行性のレベルは、この分布の急勾配を緩和するだけです。

この動作の原因は何ですか?

ありがとう、

4

1 に答える 1

0

サーバーのいくつかのマイクロベンチマークを使用して、遅延が発生する場所をかなり簡単に絞り込むことができます。ただし、マイクロベンチマークは間違った最適化パスにつながる可能性があることに注意してください。ただし、少なくとも、自分の時間がどこで費やされているかについては、まともなアイデアを得ることができるはずです。

ペイロードをその場で生成している場合、実際にはデータ生成が大きなサイズで問題になっている可能性があります。ループバックリンクのMTUは、LAN / WANリンクの標準(1500)よりもはるかに高い必要があるため、これが要因になることはありません。

于 2011-11-29T20:49:32.987 に答える