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

128 天前
 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 数据库配置都没啥问题,小主机性能足够,下班回家后直连,网页查询数据正常,响应很快。

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

1278 次点击
所在节点    宽带症候群
9 条回复
cnnblike
128 天前
setenforce 0 了吗?
cnnblike
128 天前
我记得之前遇到过一个类似的,就是好像 selinux 在远程 ip 不一样的场景下会不大一样
comlewin
128 天前
@cnnblike setenforce 0 设置了,阿里云是 debian ,刚才把 AppArmor 也关闭了,测试了下还是不行
yinmin
128 天前
(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
128 天前
另外,用网线别用 wifi ,网线延时 1ms ,wifi 延时 6-10ms ,20ms 能直接降低 50%延时
comlewin
128 天前
@yinmin 感谢大佬回复,( 1 )是在 msyql 服务器上起的 iperf3 服务端,然后开发机上测试的,发送和接受也是对等的,没有问题 ( 2 ,3)查询表很多,获取的数据不是很大;数据表都很小,一个请求会多次请求数据库查询,下班回家直连的情况,页面响应就很快,连转圈都看不见
yinmin
128 天前
如果远程延时 37ms ,局域网 1 次 sql 是 1ms ,远程是 37ms ,1000 次就是 1 秒和 37 秒的差别。
comlewin
127 天前
@yinmin 昨晚看了下应用日志,一个接口对数据库的查询没超过 1 秒,后端接口查询完了,页面还要转 2 秒圈才响应,所以应该还是代理那块有问题
cnnblike
126 天前
开个 ntp 把时间节点都拿出来呗

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

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

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

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

© 2021 V2EX