基准测试文件说并发是同时完成多少个请求,而请求的次数是请求的总数.我想知道的是,如果我把并发级别为20的请求放在一起,这是否同时需要20个请求的5个测试,或者每个20个请求的100个测试.我假设第二个选择,因为下面列举的例子.
我想知道,因为我经常在一些测试博客上看到这样的结果:
Complete requests: 1000000 Failed requests: 2617614
这似乎是不可信的,因为失败请求的数量高于总请求数.
编辑:显示上述号码的站点:http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php
或者是否会持续尝试,直到达到一百万次成功?嗯…
这意味着一个单一的测试,共有100个请求,始终保持20个请求.我认为你的误解是,请求都要花费相同的时间,实际上从来没有这样. ab而不是按20个批次发出请求,ab只需从20个请求开始,并在每次现有请求完成时发出一个新的请求.
原文链接:https://www.f2er.com/php/140103.html例如,使用ab -n 10 -c 3进行测试将以3个并发请求开始:
[1,2,3]
让我们说#2第一次完成,ab替换第四个:
[1,4,3]
…然后#1可能完成,替换为第五:
[5,3]
…然后#3完成:
[5,6]
…等等,直到请求共有10个请求. (当请求8,9和10完成时,当然并发归档为0)
合理?
关于你的问题,为什么你看到的结果比整体请求更多的失败…我不知道答案.我不能说我已经看过了.你可以发布显示这个的链接或测试用例吗?
更新:在查看the source时,ab跟踪“Failed requests:…”行下面详细列出的四种类型的错误:
>连接 – (源中的err_conn)当ab无法设置HTTP连接时递增
>接收 – (源中的err_recv)当ab的读取失败时,递增
>长度 – (源中的err_length)当响应长度与接收到的第一个良好响应的长度不同时,递增.
>异常 – (源中的err_except)当轮询连接套接字时(例如连接被服务器杀死)时,ab看到错误时增加)
这些发生的逻辑和它们如何被计数(以及如何跟踪总坏数)是必然的,有点复杂.看来,当前版本的ab只应该根据请求计算一次失败,但也许这篇文章的作者使用的是以前的版本,它的计数不止一个?这是我最好的猜测.
如果你能够重现行为,肯定是file a bug.