2011-11-29 59 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