83

I am testing eventlet out, and I am getting this error:

~>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

The website works at localhost:8090/ and returns 200 OK.

I had the same issue with tomcat, again the website worked fine.

What could the issue be?

Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
Blankman
  • 259,732
  • 324
  • 769
  • 1,199
  • 1
    Could this be an ipv6 problem, ab trying to translate localhost and use ::1 first and failing? – Jürgen Strobel Nov 14 '11 at 11:49
  • Could this be a firewall problem? Or maybe you are using proxy? – utapyngo Nov 19 '11 at 13:35
  • If you get this error when `ab` has made ~16k requests, on macOS, see this: https://stackoverflow.com/a/30357879/537554 for an explanation, and https://serverfault.com/a/145937/91715 for a fix. – ryenus Jul 14 '19 at 16:44

5 Answers5

180

I found using 127.0.0.1 rather than localhost worked:

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

Update: May have been a bug in ab: https://groups.google.com/forum/#!msg/nodejs/TZU5H7MdoII/yivu0d4LMaAJ

dkam
  • 3,876
  • 2
  • 32
  • 24
  • 3
    hi, not for me, I get the same error. Are you running lion? it worked fine for me b4 upgrading. – Blankman Nov 14 '11 at 00:16
  • 2
    My error was slightly different to you - but yes I'm on Lion. Looks like an ab bug on Lion: https://groups.google.com/forum/#!msg/nodejs/TZU5H7MdoII/yivu0d4LMaAJ – dkam Nov 15 '11 at 10:13
  • 1
    It's an ab's bug, have to patch apache and build a new ab. See the steps below pls. http://stackoverflow.com/a/8825278/47441 – Sun Liwen Jan 11 '12 at 19:18
  • Same goes for Mountain Lion, it has version 2.3 of ab. – Arne Dec 31 '12 at 13:04
  • my be reduce the concurrency parameter which worked for me – Deepak May 26 '17 at 07:16
12

New version's apache have fix the issue. Only have to rebuild ab.

Try to download latest package from http://archive.apache.org/dist/

Have to patch apache and build a new 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

Only have to build ab, which located in support folder.

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

If your apache is very old, then patch it and build as above.

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

Done.

Sun Liwen
  • 1,224
  • 1
  • 15
  • 21
10

add the -r option which means Don't exit on socket receive errors. At times you might change the default ulimit size value. ab -r -n 10 -c 1 http://localhost:8090/

Fan Yer
  • 377
  • 3
  • 7
1

Another related bug that is still present in ab (apache-2.4.29) is that it takes just the first result from getaddrinfo. It's probably this bug that is mentioned by Jürgen Strobel in a comment. Let's say you have /etc/hosts that goes like this:

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

The first result returned by getaddrinfo for localhost is ::1. So ab tries to connect over IPv6 and fails. The workaround is to use 127.0.0.1: ab -n 10 127.0.0.1/. Or reorder the lines. Though, in my case it says:

Benchmarking localhost (be patient)...apr_socket_recv: Connection refused (111)
x-yuri
  • 16,722
  • 15
  • 114
  • 161
0

There is a patch for this bug, I followed the steps of this guide and it seems to work for me now in Lion.

bithavoc
  • 1,539
  • 15
  • 20