家里小主机 wg 组网后,笔记本开发机上应用访问小主机上 Mysql 数据库,查询有点慢,应用页面转圈圈

2025 年 4 月 27 日
 comlewin

家里小主机( operwrt 部署 wg ),阿里云( 80M ),笔记本开发机通过 wg 组网

笔记本开发机上 IDEA 项目数据库连接家里小主机上部署的 Mysql ,web 应用本地 vscode 启动。目前应用页面点击查询数据,需要等待半天

通过 iperf3 测试带宽,能到实际峰值。wg 组网都是 ipv4 ,路由器没有启用 ipv6

ping 测试如下:

开发机 ping aliyun: 来自 **** 的回复: 字节=32 时间=27ms TTL=49 ,平均为 21 ms

开发机 ping 家里 homelab: 来自 **** 的回复: 字节=32 时间=34ms TTL=62 ,平均为 37ms ,长 ping 也没有丢包

msyql 数据库配置都没啥问题,小主机性能足够,下班回家后直连,网页查询数据正常,响应很快。

不知道问题出在哪里,求大佬给诊断下,或者应该从那方面查询,谢谢

1632 次点击
所在节点    宽带症候群
9 条回复
cnnblike
2025 年 4 月 27 日
setenforce 0 了吗?
cnnblike
2025 年 4 月 27 日
我记得之前遇到过一个类似的,就是好像 selinux 在远程 ip 不一样的场景下会不大一样
comlewin
2025 年 4 月 27 日
@cnnblike setenforce 0 设置了,阿里云是 debian ,刚才把 AppArmor 也关闭了,测试了下还是不行
yinmin
2025 年 4 月 27 日
(1) Wireguard UDP 的 QOS ,你用 iperf3 测速的环境是“wireguard 下从开发机远程到 mysql 服务器”吗?也就是在 mysql 服务器上开一个 iperf3 -s ,然后开发机连接 wireguard 远程测速
(2) 点击页面后,查看 wireguard 的流量情况,有没有程序使用 select *一次获取几十 MB 的数据,甚至更多?数据量太大导致时间长
(3) mysql 的延时引发的,你看一下 web 程序,有没有 1 个页面里会连续读取 mysql 几十/几百次? (例如:先 select 到 500 条记录,然后循环 500 次去读每条记录的详细数据)

解决方法:
如果情况一,发生 UDP QOS ,改用 TCP 协议的 VPN ,或者改用 stunnel ,直接把 mysql 的端口映射到开发机 127.0.0.1
如果情况二,select * 调整成 select 指定字段,减少数据量
如果情况三,调整 sql ,一句 sql 直接返回主表+子表数据,例如:select a.flduserid,a.fldname, (select JSON_ARRAYAGG(JSON_OBJECT('subid',x.fldsubid,'score',x.fldscore)) from tblscore x where x.flduserid=a.flduserid) stu_scores from tbluser a where ...
返回 3 个字段 flduserid,fldname,stu_scores ; stu_scores 是 json 数据包,对应 user 的多条 score 记录。
yinmin
2025 年 4 月 27 日
另外,用网线别用 wifi ,网线延时 1ms ,wifi 延时 6-10ms ,20ms 能直接降低 50%延时
comlewin
2025 年 4 月 27 日
@yinmin 感谢大佬回复,( 1 )是在 msyql 服务器上起的 iperf3 服务端,然后开发机上测试的,发送和接受也是对等的,没有问题 ( 2 ,3)查询表很多,获取的数据不是很大;数据表都很小,一个请求会多次请求数据库查询,下班回家直连的情况,页面响应就很快,连转圈都看不见
yinmin
2025 年 4 月 27 日
如果远程延时 37ms ,局域网 1 次 sql 是 1ms ,远程是 37ms ,1000 次就是 1 秒和 37 秒的差别。
comlewin
2025 年 4 月 28 日
@yinmin 昨晚看了下应用日志,一个接口对数据库的查询没超过 1 秒,后端接口查询完了,页面还要转 2 秒圈才响应,所以应该还是代理那块有问题
cnnblike
2025 年 4 月 29 日
开个 ntp 把时间节点都拿出来呗

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

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

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

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

© 2021 V2EX