前情提要:某个小圈子内自己做自己玩的游戏,制作人明说了不禁、甚至鼓励自动化脚本。所以我做了一个,因为这样那样的原因最后是放在 WSL1 里跑了,白天就放家里挂着。
连续两天,回家以后发现整个操作系统处于不可用状态。任何 TCP 链接都无法建立,大部分依赖进程间通信的软件也无法运作,并且几乎都没有提供恰当的报错。但是,相应地 UDP 相关都非常正常,DNS 也正常,游戏都玩了两把才发现的。
最后唯一提供了有意义的信息的报错点是 Synergy,明确表示 socket 耗尽(值得注意的是,只有第一天是 socket 耗尽,第二天单纯地报 inter-process communication 失败)。但 netstat -ano 并没有多少连接在。将 WSL 停止后情况没有改善。甚至任务管理器的 “详细信息” 选项卡都显示不出来,最后只能重启。
将这个脚本转移到另一台原生 Linux 上去后到现在一个月了无论哪边都没发生过这种情况。
现在提问:WSL1 长期运行网络相关任务确实会导致这种情况吗? 如果是的话,是 WSL1 的实现不完整的缘故导致的吗?是我的内存没有 ECC 的缘故吗?
1
zk8802 2020-06-03 07:23:32 +08:00
有可能是句柄泄露。Windows 10 现在有好几个句柄泄露的 bugs 。WSL1 的实现里面发生句柄泄露我完全不意外。
|
2
wszgrcy 2020-06-03 09:21:01 +08:00 via Android
大佬,啥游戏,好玩吗?
|
3
hfc 2020-06-03 09:38:44 +08:00
我怀疑我遇到的端口占用问题跟你这个类似
就是比如刚开机没多久啥也还没干,然后发现 10086 端口被占用了,改 10087 、10088 等都是被占用,netstat 里也找不到,最后是重启解决的。这个问题遇过好几次了,被占用的端口不固定,总的来说感觉是去年下半年开始才出现的。 |
5
binbinyouliiii 2020-06-03 09:47:08 +08:00 1
我在用 WSL2,也遇到了端口莫名被占用的情况,表现为 55r 和 jetbrains 全家桶打不开,提示端口被占用,但是有在命令行里看找不到被占用的端口,非常奇怪
|
6
Itoktsnhc 2020-06-03 10:10:21 +08:00
也有遇到 jetbrains 全家桶端口被占用问题,重启能解决,有时候科学软件也会报端口被占用。
不知道和这个问题有无关系 https://github.com/docker/for-win/issues/3171#issuecomment-554587817 |
7
march1993 2020-06-03 16:28:21 +08:00
遇到过一模一样的情况,把 wsl1 里所有进程杀光之后,多刷新几遍浏览器就打开了。。
|
8
cooldoubi 2020-09-14 10:59:23 +08:00 1
|
9
no1xsyzy OP @cooldoubi 我觉得上面 @binbinyouliiii 和 @Itoktsnhc 都是你链接的这个情况,而与我的情况不同。
另附: 我当时并不知道 WSL 完全停止需要 wsl.exe 的操作,而仅仅是 kill 了所有进程。 wsl.exe 来停止可能可以,但是不想尝试了,甚至把 log 都写进 journald 了,wsl 就更没意义了,反正笔记本放着也是放着,上面还跑着个 nextcloud 。 |