【问题标题】:Transfer Rate behavior of increasing request sizes请求大小增加的传输速率行为
【发布时间】:2011-11-29 19:59:31
【问题描述】:

几周前,我为我的编程任务实现了一个简单的多线程 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

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

这种行为的原因是什么?

谢谢,

【问题讨论】:

  • 在达到标准以太网数据包的大小(1542 字节)之前,您的传输速率似乎会增加,之后吞吐量开始下降。
  • 这也是我的第一个想法。我不明白为什么这会是一个问题......

标签: java multithreading serversocket apachebench


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答,原来是数据生成导致了这个问题,当我尝试发送一个 20kb 的预生成文件时,吞吐量要好得多。
猜你喜欢
  • 1970-01-01
  • 2012-03-07
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
相关资源
最近更新 更多