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?


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


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.


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/


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)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.