家里小主机( 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 数据库配置都没啥问题,小主机性能足够,下班回家后直连,网页查询数据正常,响应很快。
不知道问题出在哪里,求大佬给诊断下,或者应该从那方面查询,谢谢
![]() |
1
cnnblike 128 天前
setenforce 0 了吗?
|
![]() |
2
cnnblike 128 天前
我记得之前遇到过一个类似的,就是好像 selinux 在远程 ip 不一样的场景下会不大一样
|
4
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 记录。 |
5
yinmin 128 天前
另外,用网线别用 wifi ,网线延时 1ms ,wifi 延时 6-10ms ,20ms 能直接降低 50%延时
|
![]() |
6
comlewin OP @yinmin 感谢大佬回复,( 1 )是在 msyql 服务器上起的 iperf3 服务端,然后开发机上测试的,发送和接受也是对等的,没有问题 ( 2 ,3)查询表很多,获取的数据不是很大;数据表都很小,一个请求会多次请求数据库查询,下班回家直连的情况,页面响应就很快,连转圈都看不见
|
7
yinmin 128 天前
如果远程延时 37ms ,局域网 1 次 sql 是 1ms ,远程是 37ms ,1000 次就是 1 秒和 37 秒的差别。
|
![]() |
9
cnnblike 126 天前
开个 ntp 把时间节点都拿出来呗
|