Error de prueba de Apache Bench en OS X: "apr_socket_recv: restablecimiento de la conexión por parte (54)"

55

Actualicé mi MacBook Pro 13 "a Lion hace unas semanas. Me acabo de enterar de que Apache Bench (apache2.2.19) no funciona. Siempre muestra este error, pase lo que pase:

apr_socket_recv: restablecimiento de la conexión por igual (54)

También hice una instalación limpia en mi Mac Mini y produjo el mismo error.

¿Cómo puedo arreglar esto?

ben
fuente
Yo también recibo estos ... Los obtengo al probar un pequeño servidor web Go y con un servidor Python Gevent.
Justin

Respuestas:

65

Tenga en cuenta que si lo usa -rcon Apache Bench, no se cerrará con errores.

De la documentación :

-r
No salga del zócalo y reciba errores.

Millas
fuente
11
Debería, excepto que está mal. Solo intenté correr: ab -n 200 -c 20 -r http://localhosty obtuve (¡Dios no permita que un comentario tenga nuevas líneas!) Test aborted after 10 failures apr_socket_connect(): Operation already in progress (37) Total of 4 requests completed
umassthrower
3
desafortunadamente todavía sale
DataGreed
Trabajó para mí en OS X 10.9
Willem
47

Esto se debe a un error en el software de Apache que se incluye con Lion. Una versión más reciente de Apache (beta) soluciona el problema. Para arreglar ab, estos son los pasos:

  1. Descargue la última versión de Apache

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

Si 2.3.16 no está disponible, vaya a http://apache.mirrors.pair.com/httpd y obtenga la última versión

  1. Instale pcre (necesita cerveza para esto)

    $ brew install pcre
    
  2. Construye Apache

    $ tar xzvf httpd-2.3.16-beta.tar.bz2
    $ cd httpd-2.3.16-beta
    $ ./configure
    $ make
    
  3. Sobrescriba el ab existente con el recién construido

    $ sudo cp support/ab /usr/sbin
    
andy318
fuente
cuando makeobtengo http: Símbolos no definidos: "_apr_file_link", referenciado desde: _post_rotate en rotatelogs.o ld: símbolo (s) no encontrado (s) collect2: ld devolvió 1 estado de salida make [2]: *** [rotatelogs] Error 1 make [1]: *** [todo recursivo] Error 1 make: *** [todo recursivo] Error 1 ¿Algún consejo sobre cómo resolver eso?
Jonathan
¿Sigue siendo un problema en OSX 10.8.2?
Chris Wagner
3
Estoy comparando una aplicación de node.js helloworld. Al principio estaba recibiendo un Connection reset by peer (54)para cualquier abevaluación comparativa. Luego, después de hacer la corrección anterior, podría hacer ab -n 100 -c 100. Entonces podría hacer ab -n 200 -c 100. Podría hacer ab -n 200 -c 150... Cuando tomo lo -canterior -c 200, A VECES se ejecuta y a veces arroja un Connection Reset by Peer (54)error. Está siendo no determinista. ¿Qué hacer?
Rakib
3
Al ejecutar ./configure, eche un vistazo a esta publicación si se encuentra con configure: error: C compiler cannot create executables: stackoverflow.com/a/11712497/599391
Chiubaka
5

El uso del método de actualización de ab a través de homebrew en este enlace funcionó para mí.

brew install 'https://raw.github.com/simonair/homebrew-dupes/e5177ef4fc82ae5246842e5a544124722c9e975b/ab.rb'
brew test ab
mmay
fuente
2
¡Bienvenido a Super User! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
slhck
Estoy obteniendo:Error: Download failed: http://www.apache.org/dist/httpd/httpd-2.4.2.tar.bz2
Benjamin Crouzier
@pinouchon, aunque el autor ya ha mantenido el script, aquí hay un nuevo enlace de trabajo: raw.githubusercontent.com/simonair/homebrew-dupes/… (tipo:brew install "https://raw.githubusercontent.com/simonair/homebrew-dupes/e26f111d450d1a030515e1dde4e1dc4693efa78d/ab.rb")
Matt3o12
Error: ab: método indefinido 'sha1' para Formulario :: FormulaNamespacebc6d3f6af42f9cfa51e2e726dcc9ff30 :: Ab: Clase @ Matt3o12
Mark Ramotowski
4

¿Intentaste usar: en 127.0.0.1lugar de localhost?

También mi ab falla si no escribo url http://en frente.


fuente
2

Tuve el mismo error con Mountain Lion ab v2.3, y estaba casi listo para instalar brew y la última versión de ab como se indica en una de las respuestas anteriores. Antes de finalmente ir por ese camino, intenté simplemente agregar la barra diagonal final .

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

En el mensaje anterior, preste atención al formato requerido de la URL de entrada. Los componentes opcionales están marcados con corchetes, pero observe que la parte / ruta parece no ser opcional. Así que supuse que si estoy probando el dominio raíz, al menos debería agregar la barra diagonal final , ¡lo que realmente funcionó! Espero que esto también te ayude.

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
Ojo
fuente
0

Algunas cosas para probar:

  • ¿Puedes intentar deshabilitar el firewall si ves que funciona?
  • habilite el uso compartido web y pruebe localhost / (asegúrese de que funcione primero en un navegador)

Si ninguno de esos trabajos puede abrir una terminal y

$ sudo opensnoop

luego ejecute el banco apache y publique la salida del terminal opensnoop en la pregunta. Si nada de eso funciona, podría intentar instalar macports y luego instalar apache desde allí y ver si eso funciona como una solución (algo aburrido).

My Air está en Lion pero la versión de Apache es diferente (hubo una actualización recientemente, ¿ya la has instalado?). Pude verificar que ab funciona para mí:

$ 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
polinomio
fuente
Gracias por la respuesta @polynomial :) también ab google.com/funciona para mí, intenteab -n 1000 -c 1000 google.com/
ben
@ben Recuerdo haber tenido un problema similar y recuerdo que se resolvió agregando http: //? Estoy en la máquina de Windows ahora, lo comprobaré cuando llegue a casa.