2

几周前,我为我的编程任务实现了一个简单的多线程 HTTP 服务器。在这个作业中,用户通过浏览器指定了一个文档大小(例如 localhost:port/250 用于 250 字节长的文档),我的程序创建了一个具有该大小的 html 页面。

我已经使用称为 apachebench 的基准测试工具测试了它的性能。性能主要是我对多线程程序的期望。

但是,有一个有趣的测试结果困扰了我一段时间。请求的传输率随着请求大小的增加而急剧下降。这是我使用此命令行参数的示例 apachebench 测试结果;

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

请求大小发送
(字节) (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

并发水平只会使这种分布不那么陡峭。

这种行为的原因是什么?

谢谢,

4

1 回答 1

0

您可以通过服务器中的一些微基准相当容易地缩小延迟的范围。但是请注意,微基准测试可能会导致您走上错误的优化路径。不过,您至少应该能够对自己的时间花在哪里有一个不错的了解。

如果您正在动态生成有效负载,实际上可能是数据生成在较大尺寸下成为问题。环回链路上的 MTU 应该远高于 LAN/WAN 链路的标准 (1500),因此这不应该是一个因素。

于 2011-11-29T20:49:32.987 回答