windows server 2022服务器运行比特彗星软件一段时间后tcp端口异常丢失,该问题难以复现,排除临时端口解决,高延迟丢包
windows server 2022服务器运行比特彗星软件一段时间后tcp端口异常丢失,该问题难以复现,排除临时端口解决,高延迟丢包tcp端口突然丢失找到复现原因了,用户列表peer发起tcp请求的时候,如果软件用到的本地端口和软件监听端口一致,就会导致线程死锁出现tcp端口丢失
windows server系统默认的端口范围是1024-64511,现有版本解决方案,把端口改成3位数(或者65000及之后的端口),避免用到临时端口,后续新版本可以从软件代码上解决
C:\Users\Administrator>netsh int ipv4 show dynamicport tcp
协议 tcp 动态端口范围
---------------------------------
启动端口 : 1024
端口数 : 64511
C:\Users\Administrator>
Windows10 11家用系统不受此问题影响,家用电脑不会丢失tcp端口,默认的临时端口是49152-64511
Windows server不换tcp监听端口的解决办法
netsh int ipv4 add excludedportrange protocol=tcp startport=1235 numberofports=1 store=persistent
netsh int ipv4 add excludedportrange protocol=tcp startport=22223 numberofports=1 store=persistent
netsh int ipv4 add excludedportrange protocol=tcp startport=22224 numberofports=1 store=persistent
确认排除临时端口成功
netsh int ipv4 show excludedportrange protocol=tcp
后续如果要删除添加的排除端口
netsh int ipv4 delete excludedportrange protocol=tcp startport=1235 numberofports=1 store=persistent
netsh int ipv4 delete excludedportrange protocol=tcp startport=22223 numberofports=1 store=persistent
netsh int ipv4 delete excludedportrange protocol=tcp startport=22224 numberofports=1 store=persistent
以上依旧是猜测的结果,因为Windows本身会自动跳过22223当前软件监听端口,上方图中的22223其实是远程访问本地,任务管理器没显示来源方向而已,本地发起请求的时候使用的临时端口会跳过已监听
至少能比较轻松的复现了,软件全选任务停止,批量替换tracker清空等待发起,开启任务就能概率复现
出现丢tcp端口能观察到的就是会卡住几个ESTABLISHED,然后过几分钟会变成CLOSE_WAIT状态一直不消失
netstat -ano | find "22223"
并且,上面添加添加排除端口的方法实际上测试后并不起作用,添加排除后依旧会出现比特彗星丢端口的情况,比较Windows系统内核已经自动化的排除了
等于说又陷入了不知道这是什么原因导致的丢端口,今天得到的结果就是能复现这个问题了,只要重复那个操作开启几次任务就能复现
2026年5月4日帖子补充
tcp丢端口除了cpu多线程静态竞争条件,应该是没用原子计数导致意外出现<0引起负数的值导致互斥锁
而且和这个设置有关 network.max_connecting_connections > 600的时候就很容易tcp丢包,或者整个tcp端口永久丢失,比如设置大于600的时候,例如800、1000的时候产生tcp丢包
截图现象为tcp丢包,如果是丢tcp端口那么是永远持续性的tcp超时,除非进设置里面换个随机监听端口在换回原来的监听端口才能恢复tcp访问
已经确定不是系统的问题,系统是server2022,也解锁了MaxUserPort为65534,其它程序尝试发tcp请求没有这种tcp丢包和永久丢端口的现象
network.max_connecting_connections 设置 600 的时候就没出现tcp丢包,按照之前的复现方式去测试,也没永久丢失tcp端口的现象了,副作用就是随着运行时间积累越来越多几十万等待发起
2026年5月31日帖子补充
丢端口变成黄灯阻塞是已知的BUG,但是还没找到怎么来修复,这里有个解决办法就是
自动每小时重新检查就是把 network.check_port_interval_hour 改成1,一旦出现阻塞会用黄灯通知用户
方法一
network.max_connecting_connections的值改成600,就再也不会丢失TCP端口了,副作用就是出现大量等待发起
方法二
临时解决办法,进设置里面换个随机监听端口在换回原来的监听端口才能恢复tcp访问
方法三
等开发者修复这个bug
https://www.cometbbs.com/t/221%E6%B5%8B%E8%AF%95%E7%89%88/97858/29
帖子补充
v2.21版本修复永久丢端口的问题,请测试还是否出现
高延迟丢包暂时无解,可以考虑把正在发起从10000改成1000,或者600
页:
[1]