/dev/null

(◞‸◟)

MacOS X 10.8でab(apache bench)でConnection reset by peerが出た時の対処方法

タイトル通り。

簡単に負荷テストがてらabを実行した場合に

$ab -n 10 -c 100 http://hoge.server.com/

Benchmarking hoge.server.com/(be patient)...apr_socket_recv: Connection reset by peer (54)

となってしまう。

これはabが腐ってるからっぽいので自前でインストールする。

まず最新版のhttpdを持ってきて解凍する

wget http://ftp.kddilabs.jp/infosystems/apache//httpd/httpd-2.4.9.tar.gz

で解凍してconfigure→make

./configure 



onfigure:
configure: Configuring Apache Portable Runtime Utility library...
configure:
checking for APR-util... yes
checking for gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc
checking whether the C compiler works... no
configure: error: in `/Users/UserName/Downloads/httpd-2.4.9':
configure: error: C compiler cannot create executables
See `config.log' for more details
 

が、上記のようなconfigure時にエラーがでてしまう

/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc

が見つからないらしい。 でこの辺りのディレクトリを掘ってみると /Applications/Xcode.app/Contents/Developer/Toolchains/ まではあるが実際にあるのはXcodeDefault.xctoolchainになってる。 10.8の頃からこうなったぽい。 Xcode周りのパスが変わるの度々あるらしいのでこうなる。

とりあえず10.8の名前でシンボリックリンクを貼る。

cd /Applications/Xcode.app/Contents/Developer/Toolchains/

sudo ln -s XcodeDefault.xctoolchain OSX10.8.xctoolchain

これでもう1回 ./configureしてみる。

多分成功する(pcre周りでエラー出たら brew install pcreする)と思うので、makeをかける。

make installしても良いが、特にhttpd自体が必要なわけじゃないのでsupportディレクトリにあるabだけコピーする。

sudo cp /usr/sbin/ab /usr/sbin/ab.original

sudo cp support/ab /usr/sbin/ab

で、再度abを実行すると多分正しく実行できるようになる。