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 і не вдається?
Юрген Стробель

Це може бути проблемою брандмауера? А може, ви використовуєте проксі?
utapyngo

Якщо ви отримуєте цю помилку , коли abзробив ~ 16к запитів, на 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. Схоже на помилку з помилками на Lion: groups.google.com/forum/#!msg/nodejs/TZU5H7MdoII/yivu0d4LMaAJ
dkam,

1
Це помилка програми ab, потрібно виправити apache і створити нову програму ab. Дивіться кроки нижче, будь ласка stackoverflow.com/a/8825278/47441
Нд Liwen

Те саме стосується гірського лева, він має версію 2.3 ab.
Арне

my be зменшити параметр паралельності, який працював у мене
Діпак,

12

Apache нової версії вирішив проблему. Доведеться лише перебудувати ab.

Спробуйте завантажити останній пакет з http://archive.apache.org/dist/

Доведеться виправляти apache і будувати нову програму.

$ 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

Готово.


Переконайтеся, що cp support / ab to / usr / sbin (або де завгодно, як це визначено "яким ab"
Суніл Гоуда,

8

додайте -rопцію, що означає Не виходити з розетки, отримувати помилки. Іноді ви можете змінити значення обмеженого розміру за замовчуванням. 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

Перший результат, який повертає getaddrinfofor, 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.