AB出现错误,显示apr_socket_recv:连接被拒绝(61)。

83

我正在测试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上也遇到了同样的问题,但该网站工作正常。

可能是什么问题呢?


1
这可能是一个IPv6问题,ab尝试翻译本地主机名并首先使用::1失败了吗? - Jürgen Strobel
这可能是防火墙的问题吗?或者你在使用代理吗? - utapyngo
如果在 macOS 上使用 ab 进行了约 16k 次请求时出现此错误,请参阅以下链接以获取解释:https://dev59.com/iF0a5IYBdhLWcg3waYGM#30357879,并查看 https://serverfault.com/a/145937/91715 以获取修复方法。 - ryenus
5个回答

181

3
嗨,不是我遇到这个问题,我也出现了同样的错误。你正在使用 Lion 系统吗?在升级之前,它对我来说运行得很好。 - Blankman
2
我的错误与你略有不同 - 但是是的,我在Lion上。看起来这是Lion上的一个ab bug:https://groups.google.com/forum/#!msg/nodejs/TZU5H7MdoII/yivu0d4LMaAJ - dkam
1
这是一个ab的bug,必须修补apache并构建一个新的ab。请参见下面的步骤。https://dev59.com/02sz5IYBdhLWcg3wYGrQ#8825278 - Sun Liwen
同样适用于Mountain Lion,它具有ab的2.3版本。 - Arne
可能是将并发参数降低对我有用。 - Deepak

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

只需要构建位于support文件夹中的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

完成。


确保将 support/ab 复制到 /usr/sbin(或根据“which ab”的确定复制到任何其他位置) - Sunil Gowda

10

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


1

还有一个相关的 bug,它仍然存在于abapache-2.4.29)中,即它只从getaddrinfo中获取第一个结果。这可能是Jürgen Strobel在评论中提到的 bug。假设你有这样一个/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)

0

这个 bug 有一个补丁,我按照 这个指南 的步骤操作,现在在 Lion 上看起来已经可以工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接