小樱 发表于 2025/12/28 21:35

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系统内核已经自动化的排除了
等于说又陷入了不知道这是什么原因导致的丢端口,今天得到的结果就是能复现这个问题了,只要重复那个操作开启几次任务就能复现
页: [1]
查看完整版本: windows server 2022服务器运行比特彗星软件一段时间后tcp端口异常丢失,该问题难以复现,排除临时端口解决