3

也许这是一个关于 ab 而不是 Tornado 的问题,但有些事情没有意义。

我像这样运行基准测试:

$ ab -n 100 http://localdomainname/ # 2 tornados being 1 nginx
 ...
Concurrency Level:      1
Time taken for tests:   0.162 seconds
Complete requests:      100
Failed requests:        17
   (Connect: 0, Receive: 0, Length: 17, Exceptions: 0)
Write errors:           0

因此,根据 100 个请求中有 17 个失败。

在运行基准测试之前,我重置了日志文件并再次查看它们:

$ wc -l /tmp/gkc.access.log 
100 /tmp/gkc.access.log
$ cat /tmp/gkc.access.log | grep ' 200 ' | wc -l
100

所以,根据 Nginx 没有请求失败!为什么 ab 说 17 of 100 失败了?

(顺便说一句,100 人中有 17 人只是一个例子。它会上下波动,但绝不是我所期望的 0)

更新

在不接触 Tornado+Nginx 设置的情况下使用 httperf 进行测试后,我收到 0 个失败的请求。

4

1 回答 1

14

您得到“长度”失败的请求,这并不意味着响应代码不是 200。这只是意味着请求之间的响应长度不同(它记住第一个的长度)。

在这个问题中详细讨论了这个问题:Load Testing with AB ... fake failed requests (length)

于 2011-11-06T16:41:26.623 回答