ab wyświetla błąd z apr_socket_recv: Odmowa połączenia (61)

79

Testuję eventlet out i otrzymuję ten błąd:

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

Witryna działa pod adresem localhost: 8090 / i zwraca 200 OK.

Miałem ten sam problem z tomcat, znowu strona działała dobrze.

Jaki może być problem?

Blankman
źródło
1
Czy to może być problem z ipv6, gdy ab próbuje przetłumaczyć localhost i najpierw używa :: 1, ale kończy się niepowodzeniem?
Jürgen Strobel
Czy może to być problem z zaporą? A może używasz proxy?
utapyngo
Jeśli pojawi się ten błąd po abwykonaniu ~ 16k żądań w systemie macOS, zobacz to: stackoverflow.com/a/30357879/537554, aby uzyskać wyjaśnienie, i serverfault.com/a/145937/91715, aby uzyskać poprawkę.
ryenus

Odpowiedzi:

179

Zauważyłem, że działa 127.0.0.1 zamiast localhost:

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

Aktualizacja: mógł to być błąd w ab: https://groups.google.com/forum/#!msg/nodejs/TZU5H7MdoII/yivu0d4LMaAJ

dkam
źródło
2
cześć, nie dla mnie, pojawia się ten sam błąd. Prowadzisz lwa? działało dobrze dla mnie aktualizacja b4.
Blankman,
2
Mój błąd był nieco inny niż ty - ale tak, jestem na Lionie. Wygląda na błąd ab w Lion: groups.google.com/forum/#!msg/nodejs/TZU5H7MdoII/yivu0d4LMaAJ
dkam
1
To błąd ab, muszę załatać apache i zbudować nowy ab. Zobacz poniższe kroki. stackoverflow.com/a/8825278/47441
Sun Liwen,
To samo dotyczy Mountain Lion, ma wersję 2.3 ab.
Arne
my be zmniejsz parametr współbieżności, który działał dla mnie
Deepak
12

Apache nowej wersji rozwiązały problem. Trzeba tylko odbudować ok.

Spróbuj pobrać najnowszy pakiet z http://archive.apache.org/dist/

Muszę załatać apache i zbudować nowy 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

Wystarczy zbudować ab, który znajduje się w folderze wsparcia.

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

Jeśli twój apache jest bardzo stary, popraw go i zbuduj jak powyżej.

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

Gotowe.

Sun Liwen
źródło
Upewnij się, że cp support / ab to / usr / sbin (lub gdziekolwiek zgodnie z określeniem
``
8

dodaj -ropcję, która oznacza Nie wychodź w przypadku błędów odbioru gniazda. Czasami możesz zmienić domyślną wartość rozmiaru ulimit. ab -r -n 10 -c 1 http://localhost:8090/

Fan Yer
źródło
1

Innym powiązanym błędem, który jest nadal obecny w ab( apache-2.4.29), jest to, że pobiera tylko pierwszy wynik z getaddrinfo. To prawdopodobnie ten błąd, o którym wspomina Jürgen Strobel w komentarzu . Powiedzmy, że masz /etc/hoststo tak:

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

Pierwszy wynik zwrócony przez getaddrinfofor localhostto ::1. Więc abpróbuje połączyć się przez IPv6 i kończy się niepowodzeniem. Rozwiązaniem jest użycie 127.0.0.1: ab -n 10 127.0.0.1/. Lub zmień kolejność linii. Chociaż w moim przypadku mówi:

Benchmarking localhost (be patient)...apr_socket_recv: Connection refused (111)
x-yuri
źródło