ab使用apr_socket_recv错误输出:连接被拒绝(61)

时间:2011-10-29 12:21:55

标签: python apachebench eventlet

我正在测试eventlet,我收到了这个错误:

~>ab -n 10 -c 1 http://localhost:8090/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)...apr_socket_recv: Connection reset by peer (54)
Total of 2 requests completed

该网站在localhost:8090 /并且返回200 OK。

我和tomcat有同样的问题,网站再次运行良好。

问题是什么?

5 个答案:

答案 0 :(得分:176)

我发现使用127.0.0.1而不是localhost工作:

ab -n 10 -c 1 http://127.0.0.1:8090/

更新: 可能是ab:https://groups.google.com/forum/#!msg/nodejs/TZU5H7MdoII/yivu0d4LMaAJ

中的错误

答案 1 :(得分:12)

新版本的apache解决了这个问题。只需要重建ab。

尝试从http://archive.apache.org/dist/

下载最新的软件包

必须修补apache并构建新的ab。

$ wget http://archive.apache.org/dist/httpd/httpd-2.3.16-beta.tar.bz2
$ tar jxvf httpd-2.3.16-beta.tar.bz2 
$ cd httpd-2.3.16-beta
$ ./configure

只需要构建位于支持文件夹中的ab。

$ cd support
$ make
...
$ ./ab -n 10 -c 1 http://localhost:8090/

如果您的apache非常老,请修补它并按上述方式构建。

$ wget https://www.rtfm.ro/download/patches/ab.patch --no-check-certificate
$ patch -p0 < ./ab.patch

完成。

答案 2 :(得分:6)

添加-r选项,这意味着不要退出套接字接收错误。 有时您可能会更改默认的ulimit大小值。 ab -r -n 10 -c 1 http://localhost:8090/

答案 3 :(得分:1)

abapache-2.4.29)中仍然存在的另一个related buggetaddrinfo的第一个结果。这可能是JürgenStrobel在comment中提到的这个错误。假设你有/etc/hosts,就像这样:

127.0.0.1   localhost.localdomain   localhost
::1     localhost.localdomain   localhost

getaddrinfo localhost返回的第一个结果是::1。所以ab尝试通过IPv6连接并失败。解决方法是使用127.0.0.1ab -n 10 127.0.0.1/。或重新排序线。虽然,在我的情况下它说:

Benchmarking localhost (be patient)...apr_socket_recv: Connection refused (111)

答案 4 :(得分:0)

有一个针对此错误的补丁,我按照this guide的步骤进行操作,现在它似乎对我有用。