VPS 网络优化实战(2026):降延迟/抖动/丢包的一套流程(附命令)

周年盛典

很多人说“VPS 网络慢”,第一反应就是:带宽太小。

但我更常见的是:

丢包(哪怕 1%-2% 都很难受)

抖动(jitter)很大,SSH 打字像抽风

队列堆积(bufferbloat),测速看着还行,但实际交互很卡

MTU/MSS 不匹配,HTTPS/下载莫名其妙卡

这篇不是“贴一堆 sysctl 就完事”。我按实战顺序写:先定位再优化,每一步都能验证、能回滚。

0)开局先做 4 个判断:慢在哪?0.1 是 DNS 慢,还是链路慢?curl -o /dev/null -s -w "dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer} total:%{time_total}\n" https://example.com

dns 高:先处理 DNS

connect 高:链路延迟/丢包/绕路

ttfb 高:对方服务慢(不一定是你 VPS 网络)

0.2 有没有丢包/抖动?ping -c 50 1.1.1.1

ping -c 50 8.8.8.8

0.3 用 mtr 看“绕路/丢包”更直观Debian/Ubuntu 先装:

sudo apt-get update && sudo apt-get install -y mtr

本机测 VPS:

sudo mtr -rwzc 200

VPS 测目标站(比如你常访问的站点):

sudo mtr -rwzc 200 example.com

怎么看(记住这两条就够):

某一跳开始丢包,后面每一跳都跟着丢包:那段链路更可疑

中间某一跳丢包很高,但后面不丢:经常只是那台路由器限 ICMP,不一定是真丢包

0.4 带宽到底够不够?(用 iperf3 更靠谱)Debian/Ubuntu:

sudo apt-get update && sudo apt-get install -y iperf3

你需要一个 iperf3 server(可以是你另一台 VPS)。

# client

iperf3 -c -t 15

iperf3 -c -P 4 -t 15

单线程低、多线程高,通常说明你受“延迟+拥塞控制”影响更大,而不是“带宽没给”。

需要更完整的定位路线,直接看这篇(先把锅甩到具体环节):

VPS 网络慢如何排查:从测速到丢包定位

1)先做最划算的一步:BBR + FQ(别乱改一堆)如果你是跨境链路、延迟高,BBR 很多时候是“最便宜的提速”。

BBR 的完整教程站内已经有了,我这里不重复:

VPS BBR 加速教程

你只要记住一个组合:

tcp_congestion_control=bbr

default_qdisc=fq

验证:

sysctl net.ipv4.tcp_congestion_control

sysctl net.core.default_qdisc

2)处理 bufferbloat:测速不慢但“用起来卡”的元凶典型症状:

speedtest 看着不错

但网页打开、SSH、API 调用就是“卡一卡”

你可以边下载边 ping,看看延迟是不是突然飙升:

# 终端 A:持续 ping

ping 1.1.1.1

# 终端 B:随便跑个大下载/同步

# 例如 curl/wget/apt update 等

如果下载一开始 ping 延迟就从 30ms 飙到 300ms+,这就是典型的队列堆积问题。

fq 往往能明显改善这种交互卡顿。

3)DNS:别小看它,尤其是你在 VPS 上拉依赖/装包先看你现在用的 DNS:

cat /etc/resolv.conf

验证 DNS 解析耗时(Debian/Ubuntu 先装):

sudo apt-get update && sudo apt-get install -y dnsutils

/usr/bin/time -f "DNS time: %e s" dig +tries=1 +time=2 google.com @1.1.1.1

你可以临时换成 Cloudflare/Google(具体看你的环境管理方式):

IPv4: 1.1.1.1 / 8.8.8.8

IPv6: 2606:4700:4700::1111 / 2001:4860:4860::8888

4)MTU/MSS:一堆“玄学卡顿”其实是它症状:

小文件没问题

一到 HTTPS 或大点的包就卡

测试 Path MTU:

# 1472 = 1500 - 28

ping -c 3 -M do -s 1472 1.1.1.1

# 不通就逐步减小

ping -c 3 -M do -s 1452 1.1.1.1

救急用 MSS clamp(不等于根治,但很多时候能立刻好转):

sudo iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

5)TCP 缓冲:别瞎调,先看你是不是“真的需要”在高延迟链路里,适当放大缓冲可以提高吞吐;但瞎调只会让问题更难定位。

建议原则:

你先用 iperf3 测到“带宽跑不满”

再考虑调 rmem/wmem

你可以先把当前值记下来(方便回滚):

sysctl net.core.rmem_max net.core.wmem_max

sysctl net.ipv4.tcp_rmem net.ipv4.tcp_wmem

6)别忽略“不是网络”的慢:CPU/内存/磁盘/应用本身有些慢,根本不是网络。

先跑这几条,很多时候一眼就能看出来:

uptime

free -h

df -hT

CPU 跑满:一切都慢

内存爆了:开始 swap/触发 OOM,体感像“网络突然变慢”

磁盘满了:写不进去,服务各种异常

CPU 相关排查直接看这篇:

VPS CPU 跑满 100% 排查

磁盘相关救火看这篇:

VPS 硬盘满了怎么办:清理 + 扩容

7)最推荐的做法:小步迭代 + 每步验证我建议你按这个顺序来(每一步都能回滚):

curl -w 分清 DNS/链路/TTFB

ping/mtr/iperf3 定位问题类型

BBR + FQ(最划算)

DNS 优化

MTU/MSS 排坑

需要时再动 TCP 缓冲

最后提醒一句:

如果你测出来是“晚高峰拥塞/绕路”,那你再怎么调 sysctl,也救不了物理链路。

这个时候最现实的解法就是:换地区、换线路、上 CDN。

Cloudflare CDN 加速设置