Erreur de test Apache Bench sous OS X: «apr_socket_recv: connexion réinitialisée par un homologue (54)».


55

J'ai mis à jour mon MacBook Pro 13 "avec Lion il y a quelques semaines. Je viens de découvrir qu'Apache Bench (apache2.2.19) ne fonctionnait pas. Il affiche toujours cette erreur, quoi qu'il arrive:

apr_socket_recv: réinitialisation de la connexion par un pair (54)

J'ai également effectué une nouvelle installation sur mon Mac Mini et la même erreur s'est produite.

Comment puis-je réparer cela?


Moi aussi, je les reçois. Je les ai en testant un petit serveur Web Go et un serveur Python Gevent.
Justin

Réponses:


65

Notez que si vous utilisez -ravec Apache Bench, il ne se terminera pas en cas d'erreur.

De la documentation :

-r
Ne quittez pas sur socket recevoir des erreurs.


11
Il devrait sauf que c'est faux. Je viens essayé de courir: ab -n 200 -c 20 -r http://localhostet a obtenu ( à Dieu ne plaise un commentaire ont des sauts de ligne!) Test aborted after 10 failures apr_socket_connect(): Operation already in progress (37) Total of 4 requests completed
umassthrower

3
malheureusement, il
existe

Travaillé pour moi sur OS X 10.9
Willem

47

Cela est dû à un bogue dans le logiciel Apache fourni avec Lion. Une version plus récente d'Apache (beta) corrige le problème. Pour corriger ab, voici les étapes:

  1. Téléchargez la dernière version d'Apache

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

Si 2.3.16 n'est pas disponible, allez à http://apache.mirrors.pair.com/httpd et obtenez la dernière

  1. Installez pcre (vous avez besoin d'infusion pour cela)

    $ brew install pcre
    
  2. Construire Apache

    $ tar xzvf httpd-2.3.16-beta.tar.bz2
    $ cd httpd-2.3.16-beta
    $ ./configure
    $ make
    
  3. Ecraser l'ab existant avec celui nouvellement construit

    $ sudo cp support/ab /usr/sbin
    

quand je makehttp je reçois: Symboles non définis: "_apr_file_link", référencé depuis: _post_rotate dans rotatelogs.o ld: symbole (s) non trouvé (s) collect2: ld a renvoyé 1 état de sortie make [2]: *** [rotatelogs] Erreur 1 make [1]: *** [tout-récursif] Erreur 1 make: *** [tout-récursif] Erreur 1 Des conseils pour résoudre ce problème?
Jonathan

Est-ce toujours un problème dans OSX 10.8.2?
Chris Wagner

3
Je fais l'analyse comparative d'une application node.js helloworld. Au début , je recevais un Connection reset by peer (54)pour toute abanalyse comparative. Puis, après avoir résolu le problème ci-dessus, je pourrais le faire ab -n 100 -c 100. Alors je pourrais faire ab -n 200 -c 100. Je pourrais faire ab -n 200 -c 150... Quand je prends -cci -c 200- dessus , parfois, il s'exécute et parfois, il jette une Connection Reset by Peer (54)erreur. C'est être non déterministe. Que faire?
Rakib

3
Quand vous courez ./configure, jetez un coup d'œil à ce post si vous configure: error: C compiler cannot create executables
tombez

5

En utilisant la méthode de mise à jour ab par homebrew à ce lien a fonctionné pour moi.

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

2
Bienvenue sur Super User! Bien que cela puisse théoriquement répondre à la question, il serait préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence.
Slhck

J'obtiens:Error: Download failed: http://www.apache.org/dist/httpd/httpd-2.4.2.tar.bz2
Benjamin Crouzier

@ pinouchon Bien que le script soit maintenant plus maintenu par l'auteur, voici un nouveau lien fonctionnel: raw.githubusercontent.com/simonair/homebrew-dupes/… (type:brew install "https://raw.githubusercontent.com/simonair/homebrew-dupes/e26f111d450d1a030515e1dde4e1dc4693efa78d/ab.rb")
Matt3o12 le

Erreur: ab: méthode non définie `sha1 'pour Formulary :: FormulaNamespacebc6d3f6af42f9cfa51e2e726dcc9ff30 :: ab: Classe @ Matt3o12
Mark Ramotowski

4

Avez-vous essayé d'utiliser: 127.0.0.1au lieu de localhost?

De plus, mon ab échoue si je n'écris pas l'URL http://devant.


2

J'ai eu la même erreur avec Mountain Lion ab v2.3 et étais presque prêt à installer brew et la dernière version d'ab a comme indiqué par l'une des réponses ci-dessus. Avant d’y aller, j’essayais simplement d’ ajouter le slash final .

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

Dans le message ci-dessus, faites attention au format requis de l'URL d'entrée. Composants optionnels sont marqués avec des crochets, mais avis que / chemin partie semble être pas en option. J'ai donc supposé que si je testais le domaine racine, je devrais au moins ajouter le slash final , ce qui a vraiment fait l'affaire! J'espère que cela vous aide aussi.

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

Quelques choses à tester:

  • pouvez-vous essayer de désactiver le pare-feu pour voir si cela fonctionne?
  • activer le partage Web et tester localhost / (assurez-vous qu'il fonctionne d'abord dans un navigateur)

Si aucun de ces travaux ne peut vous ouvrir un terminal et

$ sudo opensnoop

Ensuite, lancez le banc d’Apache et affichez la sortie du terminal opensnoop dans la question. Si rien de tout cela ne fonctionne, essayez d’installer macports, puis Apache à partir de là et de voir si cela fonctionne comme un moyen de contourner le problème.

My Air est sur lion mais la version d'Apache est différente (il y a eu une mise à jour récemment, l'avez-vous déjà installée?). J'ai pu vérifier que ab ne fonctionnait pour moi:

$ 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

Merci pour la réponse @polynomial :) ab google.com/fonctionne pour moi aussi, essayezab -n 1000 -c 1000 google.com/
ben

@ben Je me souviens d'avoir un problème similaire, et je me souviens qu'il a été résolu en ajoutant http: //? Je suis sur la machine Windows maintenant, vérifiera quand je rentre à la maison.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.