我正在测试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有同样的问题,网站再次运行良好。
问题是什么?
答案 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)
ab
(apache-2.4.29
)中仍然存在的另一个related bug是getaddrinfo
的第一个结果。这可能是JürgenStrobel在comment中提到的这个错误。假设你有/etc/hosts
,就像这样:
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
getaddrinfo
localhost
返回的第一个结果是::1
。所以ab
尝试通过IPv6连接并失败。解决方法是使用127.0.0.1
:ab -n 10 127.0.0.1/
。或重新排序线。虽然,在我的情况下它说:
Benchmarking localhost (be patient)...apr_socket_recv: Connection refused (111)
答案 4 :(得分:0)
有一个针对此错误的补丁,我按照this guide的步骤进行操作,现在它似乎对我有用。