一、现象描述
在windows环境下,使用jmeter进行性能测试时,在并发量较大的情况下,发现有大量的接口报错
报错内容为:java.net.BindException: Address already in use: connect
二、原因
经查询资料得知,windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致我们在短时间内跑大量的请求时将端口占满了,导致如上报错。
同时对比TPS报错及监控平台连接数,佐证了这一点。
TPS图表,红色框框内为基本全部报错。
同一时间监控平台监控到的连接数情况
对照可以看出,当连接数超过5000左右的时候,开始大量报错。在连接数释放的过程中,又会有请求成功,当再次达到5000的时候,后续的连接又几乎全部失败。
三、解决办法
1.cmd中输入regedit命令打开注册表;
2.在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters右键Parameters;
3.添加一个新的DWORD,名字为MaxUserPort;
4.然后双击MaxUserPort,输入数值数据为65534,基数选择十进制;
5.完成以上操作,重新进行测试,就可以解决问题
四、重新测试
TCP没有再报错连接数达到了8K+