![ab を使用して nginx をベンチマークする: ピアによる接続のリセット (54)](https://rvso.com/image/567651/ab%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20nginx%20%E3%82%92%E3%83%99%E3%83%B3%E3%83%81%E3%83%9E%E3%83%BC%E3%82%AF%E3%81%99%E3%82%8B%3A%20%E3%83%94%E3%82%A2%E3%81%AB%E3%82%88%E3%82%8B%E6%8E%A5%E7%B6%9A%E3%81%AE%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%20(54).png)
最近、nginx 1.0.8 にアップデートし、キャッシュされた動的ページ (最初は proxy_pass 経由で Django アプリによって提供) と静的ページのパフォーマンスをベンチマークしてみました。どちらの場合も、nginx は 3 つまたは 4 つを超えるリクエストは処理しないため (同時接続がない場合でも)、ab はほぼすぐに次のレポートを出力します。
apr_socket_recv: Connection reset by peer (54)
最大 4 つ (またはそれ以下) のリクエストを選択した場合のみ、ab は正常に終了します。
それはなぜでしょうか? ワーカー プロセスの数を増やしてみましたが (うまくいきませんでした)、nginx は設定変数を微調整しなくても 4 つ以上のリクエストを処理できるはずです。誤って何らかの DOS 保護メカニズムを起動してしまったのでしょうか?
答え1
ab
シンプルな Node.JS アプリに対してローカルでテストを実行すると、同じ問題が発生しました。私が見つけた回避策はab -r
、オプション that indicate を使用することですDon't exit on socket receive errors
。
しかし、このエラーの根本的な原因は、ボックス内でオープンできるソケットの数が限られていることです。OSx を使用している場合は、この回答を参照して、この制限に高い数値を設定できます。