最近在用jmeter做压力测试时,发现一个问题,当线程持续上升到某个值时,报错:java.net.BindException: Address already in use: connect,如下图所示:
原因:windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致我们在短时间内跑大量的请求时将端口占满了,导致如上报错。
目前有两种解决方案:
解决方法一:.
修改Jmeter配置项
不勾选 Use KeepAlive ,该配置默认勾选,去掉勾选后,请求就变为短连接。(什么是长连接短连接可参考:https://www.cnblogs.com/zzcsza/p/12688956.html)
解决方法二:.
修改操作系统注册表
- 打开注册表:ctrl+r 输入regedit
- 进入-计算机HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
- 新建DWORD值,name:TcpTimedWaitDe,value:30(十进制)设置为30秒
- 新建DWORD值,name:MaxUserPort,value:65534(十进制)最大连接数65534
- 重启电脑