Błąd testowy Apache Bench w systemie OS X: „apr_socket_recv: Resetowanie połączenia przez peer (54)”


55

Kilka tygodni temu zaktualizowałem MacBooka Pro 13 "do Lion. Właśnie dowiedziałem się, że Apache Bench (apache2.2.19) nie działa. Zawsze pokazuje ten błąd, bez względu na:

apr_socket_recv: Resetowanie połączenia przez peer (54)

Zrobiłem również czystą instalację na moim Macu Mini i wystąpił ten sam błąd.

Jak mogę to naprawić?


Ja też je otrzymuję. Dostaję je podczas testowania małego serwera internetowego Go i serwera Python Gevent.
Justin

Odpowiedzi:


65

Pamiętaj, że jeśli korzystasz -rz Apache Bench, nie zakończy się na błędach.

Z dokumentacji :

-r
Nie wychodź z gniazda odbierać błędy.


11
Powinno być, ale jest źle. Właśnie próbowałem uruchomić: ab -n 200 -c 20 -r http://localhosti dostałem ( Test aborted after 10 failures apr_socket_connect(): Operation already in progress (37) Total of 4 requests completed
Boże, niech

3
niestety nadal wychodzi
DataGreed,

Pracował dla mnie na OS X 10.9
Willem

47

Wynika to z błędu w oprogramowaniu Apache dołączonym do Lion. Nowsza wersja Apache (beta) rozwiązuje problem. Aby naprawić ab, oto kroki:

  1. Pobierz najnowszą wersję Apache

    $ wget http://apache.mirrors.pair.com//httpd/httpd-2.3.16-beta.tar.bz2
    

Jeśli 2.3.16 nie jest dostępne, przejdź na stronę http://apache.mirrors.pair.com/httpd i uzyskaj najnowszą wersję

  1. Zainstaluj PCR (potrzebujesz do tego naparu)

    $ brew install pcre
    
  2. Zbuduj Apache

    $ tar xzvf httpd-2.3.16-beta.tar.bz2
    $ cd httpd-2.3.16-beta
    $ ./configure
    $ make
    
  3. Zastąp istniejący ab nowym

    $ sudo cp support/ab /usr/sbin
    

kiedy makeotrzymuję http: Otrzymuję: Niezdefiniowane symbole: „_apr_plik_pliku”, do którego odwołuje się: _post_rotate w rotatelogs.o ld: nie znaleziono symboli (s) collect2: ld zwrócił 1 status wyjścia make [2]: *** [rotatelogs] Błąd 1 make [1]: *** [all-recursive] Błąd 1: *** [all-recursive] Błąd 1 Jakieś wskazówki, jak to rozwiązać?
Jonathan

Czy to wciąż problem w OSX 10.8.2?
Chris Wagner,

3
Testuję aplikację helloworld dla node.js. Na początku byłem otrzymaniu Connection reset by peer (54)jakiegokolwiek abbenchmarkingu. Następnie po wykonaniu powyższej poprawki mogłem zrobić ab -n 100 -c 100. Wtedy mógłbym zrobić ab -n 200 -c 100. Mógłbym zrobić ab -n 200 -c 150... Kiedy przejdę -cwyżej -c 200, CZASAMI wykonuje, a czasem generuje Connection Reset by Peer (54)błąd. Jest niedeterministyczny. Co robić?
Rakib,

3
Po uruchomieniu ./configurespójrz na ten post, jeśli configure: error: C compiler cannot create executables
natrafisz

5

Użycie metody aktualizacji ab przez homebrew pod tym linkiem działało dla mnie.

brew install 'https://raw.github.com/simonair/homebrew-dupes/e5177ef4fc82ae5246842e5a544124722c9e975b/ab.rb'
brew test ab

2
Witamy w Super User! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
slhck

Dostaję:Error: Download failed: http://www.apache.org/dist/httpd/httpd-2.4.2.tar.bz2
Benjamin Crouzier

@pinouchon chociaż skrypt jest już utrzymywany przez autora, oto nowy, działający link: raw.githubusercontent.com/simonair/homebrew-dupes/… (typ:brew install "https://raw.githubusercontent.com/simonair/homebrew-dupes/e26f111d450d1a030515e1dde4e1dc4693efa78d/ab.rb")
Matt3o12

Błąd: ab: niezdefiniowana metoda `sha1 'dla Formulary :: FormulaNamespacebc6d3f6af42f9cfa51e2e726dcc9ff30 :: Ab: Class @ Matt3o12
Mark Ramotowski

4

Próbowałeś użyć: 127.0.0.1zamiast localhost?

Również mój ab kończy się niepowodzeniem, jeśli nie napiszę adresu URL z http://przodu.


2

Miałem ten sam błąd z Mountain Lion ab v2.3 i byłem prawie gotowy do zainstalowania naparu i najnowszej wersji ab zgodnie z instrukcją jednej z powyższych odpowiedzi. Zanim w końcu poszedłem w ten sposób, próbowałem po prostu dodać końcowy ukośnik .

user$ ab http://dl.cubrid.org
ab: invalid URL
Usage: ab [options] [http[s]://]hostname[:port]/path

W powyższym komunikacie zwróć uwagę na wymagany format wejściowego adresu URL. Opcjonalne komponenty są oznaczone nawiasami kwadratowymi, ale zauważ, że / ścieżka część wydaje się być nie opcjonalne. Więc założyłem, że jeśli testuję domenę root, powinienem przynajmniej dodać końcowy ukośnik , co naprawdę załatwiło sprawę! Mam nadzieję, że to również ci pomoże.

user$ ab dl.cubrid.org/
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 dl.cubrid.org (be patient).....done


Server Software:        
Server Hostname:        dl.cubrid.org
Server Port:            80

Document Path:          /
Document Length:        13437 bytes

Concurrency Level:      1
Time taken for tests:   0.863 seconds
Complete requests:      1
Failed requests:        0
Write errors:           0
Total transferred:      13606 bytes
HTML transferred:       13437 bytes
Requests per second:    1.16 [#/sec] (mean)
Time per request:       862.778 [ms] (mean)
Time per request:       862.778 [ms] (mean, across all concurrent requests)
Transfer rate:          15.40 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      207  207   0.0    207     207
Processing:   655  655   0.0    655     655
Waiting:      234  234   0.0    234     234
Total:        862  862   0.0    862     862

0

Kilka rzeczy do przetestowania:

  • czy możesz spróbować wyłączyć zaporę, sprawdzając, czy to działa?
  • włącz udostępnianie stron internetowych i przetestuj localhost / (upewnij się, że najpierw działa w przeglądarce)

Jeśli żadna z tych czynności nie działa, możesz otworzyć terminal i

$ sudo opensnoop

następnie uruchom ławkę Apache i opublikuj dane wyjściowe terminalu opensnoop w pytaniu. Jeśli nic z tego nie działa, możesz spróbować zainstalować Macports, a następnie zainstalować apache stamtąd i sprawdzić, czy to działa jako obejście (rodzaj kulawizny).

My Air jest na lwie, ale wersja apache jest inna (ostatnio była aktualizacja, czy już ją zainstalowałeś?). Byłem w stanie sprawdzić, czy ab działa dla mnie:

$ ab -V
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/
$ uname -a
Darwin air.local 11.1.0 Darwin Kernel Version 11.1.0: Tue Jul 26 16:07:11 PDT 2011; root:xnu-1699.22.81~1/RELEASE_X86_64 x86_64
$ ab google.com/ 
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 google.com (be patient).....done


Server Software:        gws
Server Hostname:        google.com
Server Port:            80

Document Path:          /
Document Length:        219 bytes

Concurrency Level:      1
Time taken for tests:   4.130 seconds
Complete requests:      1
Failed requests:        0
Write errors:           0
Non-2xx responses:      1
Total transferred:      511 bytes
HTML transferred:       219 bytes
Requests per second:    0.24 [#/sec] (mean)
Time per request:       4130.343 [ms] (mean)
Time per request:       4130.343 [ms] (mean, across all concurrent requests)
Transfer rate:          0.12 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:     4119 4119   0.0   4119    4119
Processing:    11   11   0.0     11      11
Waiting:       11   11   0.0     11      11
Total:       4130 4130   0.0   4130    4130

Dzięki za odpowiedź @polynomial :) też ab google.com/dla mnie działa, spróbujab -n 1000 -c 1000 google.com/
ben

@ben Pamiętam, że mam podobny problem i pamiętam, że został rozwiązany przez dodanie http: //? Jestem teraz na komputerze z systemem Windows, sprawdzi, kiedy wrócę do domu.
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.