Linux tc命令可精准模拟弱网,如200ms延迟+5%丢包、1Mbps限速等,支持真实网络波动建模,且通过tc qdisc add/del命令快速启停,无需依赖第三方工具。

直接在本地模拟弱网环境测,比等真实弱网更可控、更快出结果。
用 tc 模拟弱网条件
Linux 自带的 tc(traffic control) 是最贴近真实链路的弱网模拟工具。它能精准控制延迟、丢包、带宽和乱序,不依赖第三方服务。
- 加 200ms 延迟 + 5% 丢包(典型移动弱网):
sudo tc qdisc add dev eth0 root netem delay 200ms loss 5% - 限速到 1Mbps(模拟 4G 边缘场景):
sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms - 恢复网络:
sudo tc qdisc del dev eth0 root
验证 Nginx 极速建连配置是否生效
关键看两个点:是否启用连接复用、是否跳过 TLS 握手耗时。确认你的 upstream 块里有这些配置:
- keepalive 32; —— 启用长连接池,避免重复建连
- proxy_http_version 1.1; —— 强制 HTTP/1.1,支撑 keepalive
- proxy_set_header Connection ''; —— 清除 Connection: close 头,防止后端断连
- 若用 HTTPS 回源,加上 proxy_ssl_protocols TLSv1.3; —— TLS 1.3 减少握手往返
用 wrk 或 hey 对比压测
别只看平均延迟,重点观察 p95/p99 建连耗时 和 失败率:
- 装 wrk:
sudo apt install wrk(Ubuntu)或 brew install wrk(macOS) - 测建连稳定性(10 秒,10 并发,只关注连接阶段):
wrk -t10 -c10 -d10s --latency http://your-domain.com/api/test - 对比开启 keepalive 前后:
→ 关闭 upstream keepalive 时,p99 connect 时间常 >800ms;
→ 开启后,p99 connect 时间通常压到 200–300ms 内(弱网下提升明显)
抓包确认三次握手与 TLS 行为
用 tcpdump 抓 Nginx 到后端的连接,验证是否真复用了连接:
- 在 Nginx 服务器上运行:
sudo tcpdump -i any -n host 192.168.1.100 and port 8080 -w nginx-to-backend.pcap - 打开 pcap 文件,筛选 SYN 包:
→ 若 10 秒内只看到几个 SYN(远少于请求数),说明 keepalive 生效;
→ 若每个请求都发 SYN,说明连接未复用,需检查 upstream 配置或后端是否主动关闭


















