8

我已经使用 Apache Bench 进行了一些实验来分析我的代码响应时间,但它并不能完全为我生成正确类型的数据。我希望这里的好人有想法。

具体来说,我需要一个工具

  • 是否通过网络进行 HTTP 请求(它不需要做任何非常花哨的事情)
  • 尽可能准确地记录响应时间(至少几毫秒)
  • 将响应时间数据写入文件而不进行进一步处理(或将其提供给我的代码,如果是库)

我知道ab -e,它将数据打印到文件中。问题是这仅打印分位数数据,这很有用,但不是我需要的。该ab -g选项将起作用,只是它不打印亚秒级数据,这意味着我没有所需的分辨率。

我写了几行 Python 代码来做这件事,但是 httplib 效率极低,所以结果毫无用处。一般来说,我需要比纯 Python 可能提供的精度更高的精度。如果有人对可从 Python 使用的库有建议,我会全力以赴。

我需要高性能、可重复和可靠的东西。

我知道我有一半的回答是“互联网延迟使这种详细的测量毫无意义”。在我的特定用例中,这是不正确的。我需要高分辨率的时序细节。实际使用我的 HPET 硬件的东西会很棒。

由于答案和视图数量较少,因此在这里投掷赏金。

4

6 回答 6

1

JMeter非常方便。它有一个 GUI,您可以从中设置请求和线程池,也可以从命令行运行。

于 2010-11-06T17:36:42.993 回答
1

我通过两种方式做到了这一点。

使用“loadrunner”,这是一个很棒但相当昂贵的产品(我认为这些天来自惠普)。

结合 perl/php 和 Curl 包。我发现 CURL api 在 php 中使用起来稍微容易一些。滚动您自己的 GET 和 PUT 请求非常容易。我还建议使用 Firefox 手动运行一些示例请求,并添加 LiveHttpHeaders 以捕获您需要的 http 请求的确切格式。

于 2010-11-03T01:35:50.037 回答
1

httperf非常强大。

于 2010-11-12T18:35:06.570 回答
1

开源性能测试工具的一个很好的参考:http ://www.opensourcetesting.org/performance.php

您将找到描述和“最受欢迎”列表

于 2010-11-11T18:02:40.630 回答
1

如果你会用 Java 编写代码,你可以看看JUnitPerf + HttpUnit的组合。

缺点是你必须自己做更多的事情。但以此为代价,您将获得无限的灵活性,并且可以说比使用 GUI 工具更精确,更不用说 HTML 解析、JavaScript 执行等了。

还有另一个名为Grinder的项目似乎用于类似的任务,但我没有任何经验。

于 2010-11-10T16:10:00.783 回答
0

我使用脚本在同一个交换机上驱动 10 个盒子,通过向 1 个服务器“重播”请求来生成负载。我让我的 Web 应用程序将响应时间(仅限服务器)记录到我需要的粒度,但我并不关心对客户端的响应时间。我不确定您是否愿意将往返客户的行程包括在您的计算中,但如果您这样做了,编写代码应该不难。然后,我使用一个脚本处理我的日志,该脚本提取每个 url 的时间,并根据负载绘制散点图和趋势图。

这满足了我的要求:

  • 对不同 url 的调用的真实世界分布。
  • 基于负载的趋势性能。
  • 不会通过在同一个盒子上运行其他密集操作来影响 Web 应用程序。

我将控制器作为一个 shell 脚本,foreach 服务器在后台启动了一个进程,以循环遍历文件中的所有 url,并在每个文件上调用 curl。我用 Perl 编写了日志处理器,因为当时我正在做更多的 Perl。

于 2010-11-12T06:16:55.807 回答