2011-11-29 21 views
2

幾個星期前,我爲我的編程任務實現了一個簡單的多線程HTTP服務器。在這個任務中,用戶通過瀏覽器指定了一個文檔大小(比如localhost:port/250代表一個250字節長的文檔),我的程序創建了一個具有這個大小的html頁面。遞增請求大小的傳輸速率行爲

我用一個名爲apachebench的基準測試工具測試了它的性能。性能主要是我對多線程程序的期望。

但是,有一個有趣的測試結果,這是一段時間糾纏我。 請求傳輸速率隨請求大小的增加而急劇下降。 這裏是我使用這個命令行參數的示例apachebench測試結果;

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

 
RequestSize  TX 
(bytes)   (KB/s) 
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 

併發的水平纔有這種分佈不太陡峭。

這種行爲的原因是什麼?

感謝,

+1

它看起來像你的傳輸速率增加,直到你得到一個標準的以太網數據包的大小(1542字節),之後吞吐量開始下降。 –

+0

這也是我的第一個想法。我不明白爲什麼它會是一個問題,但... –

回答

0

你可以很容易縮小,其中延遲在服務器上的某些微基準測試。但是,請注意,微型基準可能會導致您錯誤的優化路徑。儘管如此,你至少應該能夠在你的時間花在哪裏得到一個體面的想法。

如果您正在實時生成有效負載,則實際上可能是數據生成,而這在更大的尺寸下正成爲問題。環回鏈路上的MTU應遠高於LAN/WAN鏈路(1500)的標準,因此這不應該是一個因素。

+0

謝謝你的回答,事實證明,數據生成導致這個問題,當我試圖發送一個20kb的預生成文件,吞吐量要好得多。 – JuniorDev