要被 WSL 搞疯了

Dililibong 2026-07-17 14:16 1

使用 WSL 开发调试项目,项目主要用 java、vue,java的各个微服务、nacos都部署在局域网的一台服务中(8.150)。现在把各个微服务都使用docker compose部署到这台服务器中。


debug A服务时把通过nacos下线服务器上运行的A服务,调试过程中时不时发现 Fegin 调用超时,但是也有正常的时候,刚开始怀疑是nacos的策略多少有点问题没去管,现在本地开前端工程,也出现接口频繁调用超时,这才怀疑是其他原因,通过debug也看到nacos负载均衡拿到的ip是正确的。



直观现象是同时进行 ping、nc 检测,ping一直是通的,循环执行 nc -vz -w2 192.168.8.150 9999 会出现无规则断断续续的现象


 while true; do     nc -vz -w2 192.168.8.150 9999;     sleep 1; done
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
nc: connect to 192.168.8.150 port 9999 (tcp) timed out: Operation now in progress
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!
Connection to 192.168.8.150 9999 port [tcp/*] succeeded!

目前使用的 .wslconfig


[wsl2]
# WSL 与 Windows 使用同一网络
networkingMode=mirrored
# 内存限制
memory=16GB
# CPU数量
processors=4
# Swap
swap=4GB
# DNS增强
dnsTunneling=true
# Windows防火墙集成
firewall=false
# Docker/虚拟化支持
nestedVirtualization=true

[experimental]
# 自动回收WSL缓存内存
autoMemoryReclaim=gradual
# 使用稀疏虚拟磁盘
sparseVhd=true

已做的尝试:



  1. 在 WSL 中直接curl 8.150 的接口(一样频繁出现超时现象)

  2. 更改 windows 网关(原来是使用旁路由的形式,改为主网关一样)

  3. 在旁路由的终端持续 nc 检测正常,局域网内其他服务器 nc 检测正常

  4. 更改 WSL 网络各个配置,当关闭 localhost转发时的确不会出现超时(但是这就不能访问npm run dev 起来的网页了)

  5. 重置Windows的网络,并重启


主要想要解决的问题是:WSL中访问局域网内其他服务器的接口地址,频繁超时

有没了解的佬,指点下还要怎么处理或排查

最新回复 (19)
  • 91kevinshi 07-17 14:22
    1

    看不懂

    跟我的codex gpt-5.6-sol MAX说去吧

  • magiczk 07-17 14:23
    2

    网络使用桥接模式,不要使用mirrored

  • Dililibong 楼主 07-17 14:25
    3

    使用桥接模式的话注册到 nacos 那边就是 私有ip了,手动指定就要在宿主机加一个抓发了(或者有其他方式?),其他部署在服务器的微服务访问不过来

  • Fengshi 07-17 14:25
    4

    佬再把主楼内容过一遍,组织组织语言。目前看得我云里雾里 ^-^

  • Dililibong 楼主 07-17 14:26
    5

    尝试过了,扯得有点多,也不靠谱,都给了几份错误的配置

  • Zeke Yovan 07-17 14:28
    6

    现在的SSH客户端如果没AI助手.我都不会用了~哈哈哈哈

  • Dililibong 楼主 07-17 14:31
    7

    ^-^ 一句话就是:WSL中访问局域网内其他服务超时

  • Syf 07-17 14:36
    8

    让GPT去查吧,GPT查这种问题一查一个准

  • zzyi 07-17 14:36
    9

    mirror 模式网络是真容易出问题,我都是用 net 模式


    docker 使用 docker desktop, 不在 wsl 内部直接安装, docker desktop 可以集成给 WSL 使用


    后续调整docker desktop 的端口映射就可以让服务被局域网的其他设备访问了

  • Fengshi 07-17 14:42
    10

    还是这台设备,非wsl环境访问相同的局域网其他服务超时吗

  • Yzz.0 07-17 14:42
    11

    佬的问题是 本地机器WSL中访问不通 局域网主机内的微服

  • Yzz.0 07-17 14:46
    12

    先确认下,在windows宿主机下访问这些服务有问题吗?

  • Dililibong 楼主 07-17 14:51
    13

    本机打开服务器(8.150)的 swagger 网页,直接调用,一次都没碰到超时。


    通过 Test-NetConnection 命令检测10多次,有发现一次超时

  • LoopOuroboros 07-17 14:51
    14

    提个疑问点,docker-compose那边是新建一个网络供你的服务组网吗?会不会是这里的问题

    下面这个章节内的

  • Dililibong 楼主 07-17 14:53
    15

    目前看来,宿主机也会有超时的现象。(通过频繁 Test-NetConnection 发现)

  • 3A 07-17 14:54
    16

    习惯就好

  • Fengshi 07-17 14:57
    17

    我只能说wsl承受了太多。。

  • 寂寞的欧尼酱 07-17 15:00
    18

    检查流量的走向,分析卡在那一步。

  • Yzz.0 07-17 15:04
    19

    可以做下其他尝试



    1. 代理是否开了Tun模式,关闭代理试试

    2. 看下环境变量是否设置了http_proxy,https_proxy, 如果有 取消试试

* 帖子来源Linux.do
返回