ab выдает ошибку с apr_socket_recv: соединение отклонено (61)


79

Я тестирую 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, снова сайт работал нормально.

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


1
Может быть, это проблема с ipv6, ab при попытке сначала перевести localhost и использовать :: 1, но безуспешно?
Jürgen Strobel

Может быть, проблема в брандмауэре? А может вы используете прокси?
utapyngo

Если вы получаете эту ошибку при abвыполнении ~ 16k запросов в macOS, см. Здесь: stackoverflow.com/a/30357879/537554 для объяснения и serverfault.com/a/145937/91715 для исправления.
ryenus

Ответы:


179

Я обнаружил, что сработал 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


2
привет, не для меня, у меня такая же ошибка. Вы бежите со львом? он отлично работал у меня при обновлении b4.
Blankman

2
Моя ошибка немного отличалась от вашей, но да, я использую Lion. Похоже на ошибку ab на Lion: groups.google.com/forum/#!msg/nodejs/TZU5H7MdoII/yivu0d4LMaAJ
dkam

1
Это ошибка ab, нужно исправить apache и построить новый ab. См. Шаги ниже, пожалуйста. stackoverflow.com/a/8825278/47441
Сан Ливен,

То же самое и с Mountain Lion, у него версия 2.3 ab.
Arne

Я должен уменьшить параметр параллелизма, который сработал для меня
Дипак

12

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/

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

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

Готово.


Убедитесь, что cp support / ab перешел в / usr / sbin (или где-то еще, как определено с помощью 'which ab'
Сунил Гоуда,

8

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


1

Еще одна связанная ошибка, которая все еще присутствует в ab( apache-2.4.29), заключается в том, что он принимает только первый результат из getaddrinfo. Вероятно, это ошибка, о которой Юрген Штробель упоминает в комментарии . Допустим, у вас есть /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)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.