事象
JMeterにてWebサーバに負荷をかけるもjtlファイルには以下のようなエラーが記録され
...HTTP リクエスト,Non HTTP response code: org.apache.http.conn.HttpHostConnectException,Non HTTP response message: Connect to test.nginx:80 [test.nginx/10.X.X.X] failed: Connection timed out: connect,スレッドグループ 1-6476,text,false,,2722,0,20538,20538,http://hogefuga.../,0,0,54616
Webサーバにもリクエストは届いていない。
環境情報
- Windows 10
- apache-jmeter-5.4.1
原因/解決策
端末側のポートが不足している。現状の値は以下コマンドで確認可能。
$ netsh int ipv4 show dynamicportrange protocol=tcp プロトコル tcp の動的ポートの範囲 --------------------------------- 開始ポート : 49152 ポート数 : 16384
この値を管理者権限で拡張すると
$ netsh int ipv4 set dynamicport tcp start=1025 num=64511 OK
表題のエラーは出なくなる。
以下補足です。
補足
JMeterを秒間10件で実施していた際は特にエラーなく動きましたが
秒間100件にしたところ同エラーが出ました。
IANAは送信ポートを49152 ~65535で推奨しているためこの設定がデフォルトで入っていることがありますが、一時的であれば上記のように送信ポートの範囲を拡大させることでポート枯渇を防げます。
ちなみに参照系はどのユーザでもできますが、値を変更する場合は特権ユーザでないとエラーとなるので
$ netsh int ipv4 set dynamicport tcp start=1025 num=64511 要求された操作には、権限の昇格が必要です。管理者として実行してください。
ご注意ください。