Ошибка тестирования Apache Bench в OS X: «apr_socket_recv: сброс соединения по пиру (54)»


55

Я обновил свой MacBook Pro 13 "до Lion несколько недель назад. Я только что обнаружил, что Apache Bench (apache2.2.19) не работает. Он всегда показывает эту ошибку, несмотря ни на что:

apr_socket_recv: сброс соединения по пиру (54)

Я также сделал чистую установку на моем Mac Mini, и она вызвала ту же ошибку.

Как я могу это исправить?


Я тоже получаю их .. Я получаю их при тестировании небольшого веб-сервера Go и на сервере Python Gevent.
Джастин

Ответы:


65

Обратите внимание, что если вы используете -rApache Bench, он не выйдет из-за ошибок.

Из документации :

-r
Не выходите из сокета при получении ошибок.


11
Это должно быть, за исключением того, что это неправильно. Я только попытался бежать: ab -n 200 -c 20 -r http://localhostи получил (не дай бог комментарий, есть Test aborted after 10 failures apr_socket_connect(): Operation already in progress (37) Total of 4 requests completed
новые

3
к сожалению это все еще выходит
DataGreed

Работал для меня на OS X 10.9
Виллем

47

Это связано с ошибкой в ​​программном обеспечении Apache, поставляемом в комплекте с Lion. Более поздняя версия Apache (бета) решает проблему. Чтобы исправить ab, вот шаги:

  1. Загрузите последнюю версию Apache

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

Если 2.3.16 недоступен, перейдите по адресу http://apache.mirrors.pair.com/httpd и получите последнюю версию

  1. Установите pcre (для этого нужен brew)

    $ brew install pcre
    
  2. Сборка Apache

    $ tar xzvf httpd-2.3.16-beta.tar.bz2
    $ cd httpd-2.3.16-beta
    $ ./configure
    $ make
    
  3. Перезаписать существующую букву новой

    $ sudo cp support/ab /usr/sbin
    

когда я makeполучаю http: я получаю: неопределенные символы: "_apr_file_link", на которые ссылается: _post_rotate в rotatelogs.o ld: символ (ы) не найдены collect2: ld вернул 1 состояние выхода make [2]: *** [rotatelogs] ошибка 1 make [1]: *** [все-рекурсивная] Ошибка 1 делает: *** [все-рекурсивная] Ошибка 1 Любые советы, как это решить?
Джонатан

Это все еще проблема в OSX 10.8.2?
Крис Вагнер

3
Я тестирую приложение helloworld для node.js. Сначала я получал Connection reset by peer (54)за любой abтест. Затем, после исправления выше, я смог сделать ab -n 100 -c 100. Тогда я мог бы сделать ab -n 200 -c 100. Я мог бы сделать ab -n 200 -c 150... Когда я беру -cвыше -c 200, ИНОГДА он выполняется, а иногда выдает Connection Reset by Peer (54)ошибку. Это недетерминировано. Что делать?
Ракиб

3
При запуске ./configureвзгляните на этот пост, если configure: error: C compiler cannot create executables
столкнетесь со

5

Использование метода обновления ab через homebrew по этой ссылке сработало для меня.

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

2
Добро пожаловать в Супер пользователя! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки.
slhck

Я получаю:Error: Download failed: http://www.apache.org/dist/httpd/httpd-2.4.2.tar.bz2
Бенджамин Крузье

@pinouchon, хотя автор больше не поддерживает скрипт, вот новая рабочая ссылка: raw.githubusercontent.com/simonair/homebrew-dupes/… (тип:brew install "https://raw.githubusercontent.com/simonair/homebrew-dupes/e26f111d450d1a030515e1dde4e1dc4693efa78d/ab.rb")
Matt3o12

Ошибка: ab: неопределенный метод `sha1 'для Formulary :: FormulaNamespacebc6d3f6af42f9cfa51e2e726dcc9ff30 :: Ab: Class @ Matt3o12
Марк Рамотовский,

4

Вы пробовали использовать: 127.0.0.1вместо localhost?

Также мой ab терпит неудачу, если я не пишу URL с http://перед.


2

У меня была та же ошибка с Mountain Lion ab v2.3, и я был почти готов установить brew и последнюю версию ab, как указано в одном из приведенных выше ответов. Перед тем, как, наконец, пойти по этому пути, я попытался добавить косую черту .

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

В приведенном выше сообщении обратите внимание на требуемый формат входного URL. Дополнительные компоненты обозначены квадратными скобками, но обратите внимание , что / пути часть , кажется, не по желанию. Поэтому я предположил, что если я тестирую корневой домен, мне следует хотя бы добавить косую черту , которая действительно сработала! Я надеюсь, что это поможет вам тоже.

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

Несколько вещей для тестирования:

  • Вы можете попробовать отключить брандмауэр, если увидите, работает ли он?
  • включите общий доступ к сети и протестируйте localhost / (сначала убедитесь, что он работает в браузере)

Если ни один из этих способов не работает, вы можете открыть терминал и

$ sudo opensnoop

затем запустите apache bench и опубликуйте вывод терминала opensnoop в вопросе. Если ничего из этого не работает, вы можете попробовать установить macports, а затем установить Apache и посмотреть, работает ли это как обходной путь (что-то нехорошее).

Мой Air на льве, но версия apache другая (недавно было обновление, вы уже установили это?). Я был в состоянии убедиться, что AB работает на меня:

$ 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

Спасибо за ответ @polynomial :) ab google.com/у меня тоже работает, попробуйтеab -n 1000 -c 1000 google.com/
Бен

@ben Помню, у меня была похожая проблема, и я помню, что она была решена путем добавления http: //? Я сейчас на машине windows, проверю когда приеду домой.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.