(问题本身已解决)WSL1 长期运行(网络相关?)任务会导致主系统 socket 耗尽?

2020-06-03 02:40:45 +08:00
 no1xsyzy

前情提要:某个小圈子内自己做自己玩的游戏,制作人明说了不禁、甚至鼓励自动化脚本。所以我做了一个,因为这样那样的原因最后是放在 WSL1 里跑了,白天就放家里挂着。

连续两天,回家以后发现整个操作系统处于不可用状态。任何 TCP 链接都无法建立,大部分依赖进程间通信的软件也无法运作,并且几乎都没有提供恰当的报错。但是,相应地 UDP 相关都非常正常,DNS 也正常,游戏都玩了两把才发现的。

最后唯一提供了有意义的信息的报错点是 Synergy,明确表示 socket 耗尽(值得注意的是,只有第一天是 socket 耗尽,第二天单纯地报 inter-process communication 失败)。但 netstat -ano 并没有多少连接在。将 WSL 停止后情况没有改善。甚至任务管理器的 “详细信息” 选项卡都显示不出来,最后只能重启。

将这个脚本转移到另一台原生 Linux 上去后到现在一个月了无论哪边都没发生过这种情况。

现在提问:WSL1 长期运行网络相关任务确实会导致这种情况吗? 如果是的话,是 WSL1 的实现不完整的缘故导致的吗?是我的内存没有 ECC 的缘故吗?

2679 次点击
所在节点    程序员
10 条回复
zk8802
2020-06-03 07:23:32 +08:00
有可能是句柄泄露。Windows 10 现在有好几个句柄泄露的 bugs 。WSL1 的实现里面发生句柄泄露我完全不意外。
wszgrcy
2020-06-03 09:21:01 +08:00
大佬,啥游戏,好玩吗?
hfc
2020-06-03 09:38:44 +08:00
我怀疑我遇到的端口占用问题跟你这个类似
就是比如刚开机没多久啥也还没干,然后发现 10086 端口被占用了,改 10087 、10088 等都是被占用,netstat 里也找不到,最后是重启解决的。这个问题遇过好几次了,被占用的端口不固定,总的来说感觉是去年下半年开始才出现的。
no1xsyzy
2020-06-03 09:44:54 +08:00
@hfc #3 除了都是网络相关方面发生 bug 以外没有很明显的相似点吧……
我连出站连接一个都建立不了。
binbinyouliiii
2020-06-03 09:47:08 +08:00
我在用 WSL2,也遇到了端口莫名被占用的情况,表现为 55r 和 jetbrains 全家桶打不开,提示端口被占用,但是有在命令行里看找不到被占用的端口,非常奇怪
Itoktsnhc
2020-06-03 10:10:21 +08:00
也有遇到 jetbrains 全家桶端口被占用问题,重启能解决,有时候科学软件也会报端口被占用。
不知道和这个问题有无关系
https://github.com/docker/for-win/issues/3171#issuecomment-554587817
march1993
2020-06-03 16:28:21 +08:00
遇到过一模一样的情况,把 wsl1 里所有进程杀光之后,多刷新几遍浏览器就打开了。。
cooldoubi
2020-09-14 10:59:23 +08:00
no1xsyzy
2020-09-14 12:48:23 +08:00
@cooldoubi 我觉得上面 @binbinyouliiii 和 @Itoktsnhc 都是你链接的这个情况,而与我的情况不同。
另附:
我当时并不知道 WSL 完全停止需要 wsl.exe 的操作,而仅仅是 kill 了所有进程。
wsl.exe 来停止可能可以,但是不想尝试了,甚至把 log 都写进 journald 了,wsl 就更没意义了,反正笔记本放着也是放着,上面还跑着个 nextcloud 。
hfc
2020-09-15 09:54:08 +08:00
@cooldoubi 感谢分享
之前我也在 StackOverflow 上看到这个动态端口的猜测,不过那个答主没有分析到 win10 升级改变了这个端口范围,只是贴出了修改动态端口的方法,所以我也就没跟着修改了。。。这个博主的分析很有道理,我的动态端口范围跟他一致,微软修改动态端口的时间点跟我的感觉上的也对的上。。。那就修改这个配置好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/678066

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX