JMeter压力测试报错 java.net.BindException: Address already in use: connect 怎么办?
原因分析:
这个问题的原因是windows端口被耗尽了(默认1024-5000),而且操作系统要 2~4分钟才会重新释放这些端口,所以可以增加windows的可用端口来解决,windows端口最大数为65535。
解决方法:
修改操作系统注册表:
1、cmd中,用regedit命令打开注册表。
2、在 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters下,
右击parameters,添加一个新的DWORD,名字为MaxUserPort,然后双击MaxUserPort,输入数值数据为65534,基数选择十进制(如果是分布式运行的话,控制机器和负载机器都需要这样操作哦)。
3、修改配置完毕之后记得重启机器才会生效。
上面这个方法能解决一部分问题。虽然增加了端口数,但压测的时候2分钟内发送超过 70000 个请求,还是报了 Address already in use: connect 的问题。
解决该问题有两种方法,一种是修改Jmeter配置项,一种是修改操作系统注册表:
解决方法一:
修改Jmeter配置项
不勾选 Use KeepAlive ,该配置默认勾选,去掉勾选后,请求就变为短连接。
解决方法二:
修改操作系统注册表
1、cmd输入:regedit
2、找到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTCPIPParameters
3、新建 QWORD值,name:TcpTimedWaitDelay,value:30(十进制)
4、重启系统