web-dev-qa-db-ja.com

abはapr_socket_recvでエラーになります:接続が拒否されました(61)

私はイベントレットをテストしていますが、このエラーが発生しています:

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

Webサイトはlocalhost:8090 /で動作し、200 OKを返します。

Tomcatでも同じ問題が発生しましたが、Webサイトは正常に機能しました。

問題は何でしょうか?

78
Blankman

Localhostが機能するのではなく、127.0.0.1を使用していることがわかりました。

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

更新:abのバグである可能性があります: https://groups.google.com/forum/#!msg/nodejs/TZU5H7MdoII/yivu0d4LMaAJ

177
dkam

新しいバージョンの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

できた.

12
Sun Liwen

-rオプションを追加します。これは、ソケット受信エラーで終了しないことを意味します。デフォルトのulimitサイズの値を変更する場合があります。 ab -r -n 10 -c 1 http://localhost:8090/

6
Fan Yer

別の 関連バグabApache-2.4.29)にまだ存在するのは、getaddrinfoから最初の結果のみを取得することです。 comment でJürgenStrobelが言及しているのは、おそらくこのバグです。次のような/etc/hostsがあるとします:

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

getaddrinfoに対してlocalhostによって返される最初の結果は、::1です。そのため、abはIPv6を介して接続しようとし、失敗します。回避策は、127.0.0.1ab -n 10 127.0.0.1/を使用することです。または、行を並べ替えます。しかし、私の場合、それは言います:

Benchmarking localhost (be patient)...apr_socket_recv: Connection refused (111)
1
x-yuri

このバグに対するパッチがあります。 このガイド の手順に従いましたが、今はLionで動作するようです。

0
bithavoc