nginxにLion付属のab(ApacheBench)を実行したら失敗するときの解決ログ
Posted: Updated:
nginxにab(ApacheBench)を実行すると失敗してた
うちのサーバは、さくらのVPSにてnginxがフロントにいて、そこから内側のapacheとかRackとかNodeに回しています。
そんなこのサーバにLion付属のabを実行すると失敗していましたが、自力でhttpdから httpd-2.4.1.tar.bz2を取得してmake。abだけ新しいのに差し替えましたら解決しました。
問題の確認から解決まで
まずは問題の発生している状態から。
apr_socket_recv: Connection reset by peer (54)
うーん? ただのgif画像とかでも同じように切られるのでapacheとかは無罪と判定。(静的ファイルの配信はnginxがしてるから)
% ab -n 100 -c 2 http://havelog.ayumusato.com/
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 havelog.ayumusato.com (be patient)...Send request failed!
apr_socket_recv: Connection reset by peer (54)
Total of 1 requests completed
バージョン確認
色々調べていたらnginxというよりもabのほうを新しくすれば解決するようなので試します。標準の状態だとRevision: 655654ですが、これを新しくします。
% ab -V
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/
新しめのhttpdを取得してmake
2.4.1を取得してきてmakeします。参考URLの通りの手順。
%wget http://apache.mirrors.pair.com//httpd/httpd-2.4.1.tar.bz2
%brew install pcre
%tar xzvf httpd-2.4.1.tar.bz2
%cd httpd-2.4.1
% ./configure
% make
abを上書き
できあがったabを、既存のabに上書きします。
% sudo cp support/ab /usr/sbin
Revision: 1178079 となりました。
% ab -V
This is ApacheBench, Version 2.3 <$Revision: 1178079 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
直った!
正常に実行されるようになりました。ab側の問題なのかnginxとの相性だったのか不明ですが、これでabを実行できるようになってめでたしめでたし。
% ab -c 2 -n 100 http://havelog.ayumusato.com/
This is ApacheBench, Version 2.3 <$Revision: 1178079 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking havelog.ayumusato.com (be patient).....done
Server Software: nginx
Server Hostname: havelog.ayumusato.com
Server Port: 80
Document Path: /
Document Length: 29687 bytes
Connection Times (ms)
min mean[+/-sd] median max
Connect: 9 10 0.9 10 14
Processing: 37 53 9.8 52 89
Waiting: 33 48 8.9 46 81
Total: 47 63 9.7 62 98
Percentage of the requests served within a certain time (ms)
50% 62
66% 65
75% 67
80% 69
90% 76
95% 82
98% 92
99% 98
100% 98 (longest request)
参考
- Using ab to benchmark nginx: Connection reset by peer (54)
- osx lion - Apache Bench test error on OS X: "apr_socket_recv: Connection reset by peer (54)" - Super User