「延迟高」是个模糊的描述。有人指 ping 值大,有人指网页打开慢,有人指视频卡。这三种情况的排查路径完全不同。
| 症状 | 本质 | 排查方向 |
|---|---|---|
| ping 值高(>300ms) | 网络往返时间长 | 线路距离、路由跳数 |
| 丢包率高(>3%) | 数据包丢失需重传 | 线路质量、运营商 |
| 带宽不足(测速慢) | 吞吐量低 | 节点带宽、本地带宽 |
延迟高不等于带宽低。卫星网络延迟 600ms 但带宽可以有 50Mbps;反之有些线路延迟 30ms 但带宽只有 2Mbps。
先排除自己这边的问题。不连代理,直接测:
# 测到国内公共 DNS 的延迟和丢包
ping -c 20 223.5.5.5
# 测到目标节点 IP 的延迟
ping -c 20 节点IP
判断标准:
用 mtr 追踪路由,看丢包发生在哪一跳:
# macOS
brew install mtr
sudo mtr -r -c 100 节点IP
# Linux
mtr -r -c 100 节点IP
# Windows 用 winmtr 图形版
输出示例:
HOST: MacBook Loss% Snt Last Avg Best Wrst StDev
1.|-- 192.168.1.1 0.0% 100 1.2 1.5 0.9 8.2 0.9
2.|-- 100.64.0.1 0.0% 100 3.1 3.8 2.1 15.3 1.8
3.|-- 202.97.x.x 0.0% 100 8.4 9.2 7.1 25.1 2.4
4.|-- 202.97.y.y 12.0% 100 45.2 48.1 42.0 98.2 9.1 ← 丢包从这里开始
5.|-- 节点IP 12.0% 100 48.1 50.3 44.2 102.1 9.5
看第一个出现丢包且后续持续丢包的跳数。如果第 4 跳开始丢,说明是国内出口到国际段的问题,你无法解决,只能换线路。
注意:如果中间某跳丢包但后续跳数不丢,那是该路由器限制 ICMP 响应,不是真丢包。
ping 只能测延迟,测不出带宽。用 curl 下载测速:
# 通过代理下载 10MB 测试文件,看速度
curl -x http://127.0.0.1:7897 -o /dev/null -w "%{speed_download}
" https://speed.cloudflare.com/__down?bytes=10000000
结果单位是字节/秒,除以 125000 得到 Mbps。
对比测试:先不挂代理测一次,再挂代理测一次。如果本地 100Mbps、代理只有 2Mbps,说明是节点或线路带宽问题。
同一个机场的其他节点也慢吗?
换节点测试是最快的判断方法。如果换了 3 个节点都慢,问题不在节点。
延迟和丢包有明显的时间规律:
记录几个时间点的测试结果,能判断是不是高峰期问题。
按问题类型:
| 问题 | 你能做的 |
|---|---|
| 本地 WiFi 差 | 换 5G / 有线 |
| 国内出口拥塞 | 换线路(如 CN2 GIA、中转节点) |
| 节点超载 | 换节点,或联系机场 |
| 目标国线路差 | 换其他国家节点中转 |
| 高峰期拥塞 | 错峰使用,或用 Hysteria2 类协议 |
关于协议选择,见 Hysteria2 协议科普:什么时候比 VLESS 快——高丢包线路上 Hysteria2 优势明显。
ping 值 30ms 但网页很慢
延迟低不代表带宽足。用 curl 测吞吐,可能是节点带宽被占满。
mtr 显示中间跳丢包但速度正常
该路由器限制 ICMP 响应,不是真丢包。看最终跳的丢包率才有意义。
只有晚上慢,白天正常
典型的跨境线路高峰期拥塞。这不是节点故障,是物理线路容量限制,换线路或错峰使用。