https://blog.csdn.net/zhangxiaohui4445/article/details/100162317
Windows 2008 以后,微软遵从国际标准,动态端口的数量调整为16384个 (从49152起始,到65536结束),如果服务器对外有大量连接,而TCP默认的Time Wait Delay时间为2分钟这可能导致端口耗尽。
问题
- JMeter做压力测试时出现 java.net.BindException: Address already in use: connect
- Nacos client出现code:500 msg: java.net.BindException: Address already in use: connect
原因:windows提供给TCP/IP链接的端口有限,并且要几分钟来循环回收它们,就导致我们在短时间内跑大量的请求时将端口占满了,导致如上报错。
1、查询window动态端口数
请以管理员身份打开CMD,运行如下命令:
netsh interface ipv4 show tcpstats
netsh int ipv4 show dynamicport tcp
查看一下,是否端口耗尽,目前端口数量是多少,如果确认端口耗尽。
2、 增大动态端口数量(不需要重启)
netsh int ipv4 set dynamicport tcp start=1025 num=60000
其中1025是起始端口号,num为数量,上述命令意思为从1025开始的60000个端口,到61025结束。
注:该步骤无需重启机器, 立即生效
修改后运行命令检查配置
3、注册表中增大端口相关配置(需要重启)
1、打开注册表:regedit
2、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters
3、新建 DWORD值,name:TCPTimedWaitDelay,value:30(十进制) –> 设置为30秒,默认是240秒
4、新建 DWORD值,name:MaxUserPort,value:65534(十进制) –> 设置最大连接数65534
5、重启系统
参考
https://www.bbsmax.com/A/n2d9QBQQdD/
https://blog.csdn.net/MenofGod/article/details/84589751
https://blog.csdn.net/zhangxiaohui4445/article/details/100162317
https://blog.csdn.net/qq_30549833/article/details/96431245
https://blog.csdn.net/xinfeixiang2019/article/details/103474065