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を実行すると多分正しく実行できるようになる。