【问题标题】:Apache Benchmark - concurrency and number of requestsApache Benchmark - 并发和请求数
【发布时间】:2011-12-01 06:07:57
【问题描述】:

基准文档说并发是同时完成的请求数,而请求数是请求的总数。我想知道的是,如果我将 100 个请求置于 20 个并发级别,这是否意味着同时对 20 个请求进行 5 次测试,或者同时对 20 个请求进行 100 次测试?我假设第二个选项,因为下面引用的示例数字..

我想知道,因为我经常在一些测试博客上看到这样的结果:

Complete requests: 1000000
Failed requests: 2617614

这似乎不可信,因为失败的请求数高于总请求数。

编辑:显示上述数字的网站:http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php

或者它会一直尝试直到达到一百万次成功?嗯……

【问题讨论】:

    标签: php performance apache node.js concurrency


    【解决方案1】:

    这意味着一个总共有 100 个请求的测试,始终保持 20 个请求处于打开状态。我认为您的误解是所有请求都花费相同的时间,实际上从来没有这种情况。 ab 不是以 20 个为一组发出请求,而是从 20 个请求开始,每次现有请求完成时发出一个新请求。

    例如,使用 ab -n 10 -c 3 进行测试将从 3 个并发请求开始:

    [1, 2, 3]
    

    假设 #2 首先完成,ab 用第四个替换它:

    [1, 4, 3]
    

    ...然后#1 可能完成,被第五个代替:

    [5, 4, 3]
    

    ...然后#3 结束:

    [5, 4, 6]
    

    ... 以此类推,直到总共发出 10 个请求。 (随着请求 8、9 和 10 完成,并发逐渐减少到 0。)

    有意义吗?

    至于你的问题,为什么你看到的结果比总请求更多的失败...... 我不知道答案。我不能说我见过。您可以发布显示此内容的链接或测试用例吗?

    更新:在查看the source 时,ab 会跟踪四种类型的错误,这些错误在“失败的请求:...”行下方进行了详细说明:

    • 连接 - (err_conn in source) 当 ab 未能建立 HTTP 连接时增加
    • 接收 - (err_recv in source) 当 ab 读取连接失败时递增
    • 长度 - (err_length in source)当响应长度与收到的第一个良好响应的长度不同时增加。
    • 异常 - (源中的err_except)当 ab 在轮询连接套接字时发现错误时增加(例如,连接被服务器终止?)

    这些事件何时发生以及如何计算(以及如何跟踪bad 总数)的逻辑必然有点复杂。看起来当前版本的 ab 应该只对每个请求计算一次失败,但也许那篇文章的作者使用了一个以某种方式计算不止一个的先前版本?这是我最好的猜测。

    如果您能够重现该行为,肯定是file a bug

    【讨论】:

    • 感谢您对并发的解释。我看到这些结果的链接在原始问题中,我希望这是足够的例子。无论如何,我明天会尝试在工作中复制测试,如果有任何问题,我会回复。
    • 嗨,当您说request 2 finsihes 时,您的意思是Apache Bench 收到请求2 的响应,然后发送request 1
    【解决方案2】:

    我看不出有什么不对。失败的请求可能会增加一个以上的错误。这就是ab 的工作原理。

    有各种固定长度的静态声明缓冲区。 结合命令行参数的惰性解析, 来自服务器的响应头和其他外部输入, 这可能会咬你。

    您可能会注意到,例如,先前的节点结果对于 3 个错误计数器具有相似的计数。最有可能的是,在发出的 100 000 个请求中,只有 8409 个失败,而不是 25227 个。

    Receive: 8409, Length: 8409, Exceptions: 8409
    

    【讨论】:

    • ab 源实际上将每个计数器记录为“由于 导致请求失败”。看起来他们正试图在遇到这些计数器之一时立即终止每个请求。 (或者,相反,只在失败的请求结束时增加一个 err_* 计数器。)那篇文章已经有一年了,这就是为什么我猜这可能不再是一个问题。但我不确定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 2023-01-20
    • 2016-11-25
    相关资源
    最近更新 更多