ab вызывает ошибку с помощью apr_socket_recv: соединение отказано (61) - PullRequest
78 голосов
/ 29 октября 2011

Я тестирую eventlet и получаю эту ошибку:

~>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

Сайт работает по адресу localhost: 8090 / и возвращает 200 OK.

У меня была такая же проблемаtomcat, снова сайт работал нормально.

В чем может быть проблема?

Ответы [ 5 ]

177 голосов
/ 14 ноября 2011

Я обнаружил, что с использованием 127.0.0.1 вместо localhost работал:

ab -n 10 -c 1 http://127.0.0.1:8090/

Обновление: Возможно, ошибка в ab: https://groups.google.com/forum/#!msg/nodejs/TZU5H7MdoII/yivu0d4LMaAJ

12 голосов
/ 11 января 2012

Apache новой версии исправил проблему.Нужно только восстановить ab.

Попробуйте загрузить последний пакет с http://archive.apache.org/dist/

Пришлось исправлять apache и создавать новый 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

Нужно только построить ab, который находится в поддержкепапка.

$ cd support
$ make
...
$ ./ab -n 10 -c 1 http://localhost:8090/

Если ваш апач очень старый, исправьте его и соберите, как указано выше.

$ wget https://www.rtfm.ro/download/patches/ab.patch --no-check-certificate
$ patch -p0 < ./ab.patch

Готово.

6 голосов
/ 28 декабря 2016

добавить параметр -r, что означает «Не выходить при ошибках приема сокетов». Иногда вы можете изменить значение размера ulimit по умолчанию. ab -r -n 10 -c 1 http://localhost:8090/

1 голос
/ 07 января 2018

Другая связанная ошибка , которая все еще присутствует в ab (apache-2.4.29), заключается в том, что она принимает только первый результат из getaddrinfo. Вероятно, эта ошибка упоминается Юргеном Штробелем в комментарии 1007 *. Допустим, у вас есть /etc/hosts, который выглядит так:

127.0.0.1   localhost.localdomain   localhost
::1     localhost.localdomain   localhost

Первый результат, возвращаемый getaddrinfo для localhost, равен ::1. Так что ab пытается подключиться через IPv6 и терпит неудачу. Обходной путь должен использовать 127.0.0.1: ab -n 10 127.0.0.1/. Или изменить порядок строк. Хотя, в моем случае это говорит:

Benchmarking localhost (be patient)...apr_socket_recv: Connection refused (111)
0 голосов
/ 05 января 2012

Существует патч для этой ошибки, я следовал инструкциям этого руководства , и теперь мне кажется, что он работает в Lion.

...