1. 问题概述与目标
- 香港 CN2 链路在晚高峰(20:00-23:00)常见 RTT 上升和丢包率攀高问题。
- 目标:将 p95 延迟从 >120ms 降至 <60ms,将丢包率从峰值 1.2% 降至 <0.1%。
- 触发原因:队列积压、TCP 末端握手积压、链路抖动与拥塞导致重传。
- 涉及组件:VPS/物理服务器、上游 CN2 提供商、BGP 配置、CDN/缓存与 DDoS 防护。
- 指标定义:延迟用 p50/p95/p99,丢包用 ICMP 与 TCP 重传比率,带宽用吞吐 (Mbps) 衡量。
2. 监控与基线测试
- 工具:iperf3(吞吐)、mtr(路径与丢包)、ping(延迟)、tcpdump(抓包)、Prometheus+Grafana(指标可视化)。
- 采样策略:高峰期 1 分钟采样,非高峰 5 分钟采样;保留历史 90 天。
- 合成测试:每 5 分钟做一次 60s iperf3 客户端,并记录 p95 延迟与丢包率。
- 真实流量监测:nginx/haproxy 的连接数、accept 队列、应用层超时与重试率。
- 命令示例:iperf3 -c 目标 -t 60 -P 4;mtr -rwzbc 100 目标IP。
3. 内核与 TCP 参数优化(示例配置)
- 开启 BBR 拥塞控制:net.core.default_qdisc=fq;net.ipv4.tcp_congestion_control=bbr。
- 调整缓冲与并发:net.core.rmem_max=16777216;net.core.wmem_max=16777216;net.ipv4.tcp_rmem=4096 87380 16777216;net.ipv4.tcp_wmem=4096 65536 16777216。
- 连接队列与 backlog:net.core.somaxconn=1024;net.ipv4.tcp_max_syn_backlog=4096;net.core.netdev_max_backlog=3000。
- TCP 超时与重用:net.ipv4.tcp_tw_reuse=1;net.ipv4.tcp_fin_timeout=30;启用 tcp_mtu_probing=1。
- 示例 sysctl 应用:sysctl -w net.core.somaxconn=1024 ; sysctl -w net.ipv4.tcp_congestion_control=bbr。
4. 队列管理与流量整形
- 使用 fq_codel 或 cake 减少 bufferbloat:tc qdisc replace dev eth0 root fq_codel limit 1000。
- 对上行/下行分别限速,避免 ISP 链路单端拥塞:tc class add/htb + tc filter。
- 在 L7 层使用 nginx 限速与连接限制:limit_conn_zone、limit_req_zone 控制短时突发。
- MSS/MTU 修正以减少分片和重传:iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu。
- 监控队列长度:sar -n DEV 1,观察 tx_queue_drop 与 netstat -s 中的重传统计。
5. 多线冗余与 BGP 策略
- 建议:至少配置两条上游 CN2 链路(例如 2x 1Gbps)并对等 BGP,启用 ECMP 与路由优先级。
- AS 路由策略:使用社区与本地优先级(local_pref)在高峰切换流量。
- Keepalived + VRRP 实现本地网关冗余,HAProxy 做 L4 负载均衡。
- DNS 与 CDN:利用智能 DNS 切换与 CDN 缓存把静态流量下沉,减少源站带宽压力。
- 备用路径:配置 4G/5G 备链路做突发保护(SLA 低但可缓解短时丢包)。
6. DDoS 防护与上游协同
- 边界防护:限速、黑名单、SYN cookies、连接追踪阈值调整(conntrack)。
- 上游清洗:在大流量攻击时请求上游/云厂商做流量清洗(按流量计费)。
- CDN/云防护:将静态资源与热点 API 放到 CDN,减小直接打到 CN2 的压力。
- 实时策略:自动化阈值告警,超过阈值触发流量与 ACL 下发。
- 案例说明:某香港游戏厂商在峰值遭遇 SYN-Flood,启用上游清洗与本地 SYN cookies 后 10 分钟内 p95 延迟从 220ms 恢复到 55ms。
7. 真实案例、服务器配置与效果对比
- 测试服务器配置示例:Ubuntu 20.04;Kernel 5.10;8 vCPU;16 GB RAM;NVMe 200GB;CN2 BGP 1Gbps。
- 优化前(高峰):p95=135 ms;丢包率=1.2%;吞吐峰值=780 Mbps(链路 1Gbps);连接超时率=2.8%。
- 优化措施:内核 TCP/BBR 启用、tc fq_codel、BGP 多线切换、CDN 下沉、SYN 防护与上游清洗。
- 优化后(高峰):p95=48 ms;丢包率=0.04%;吞吐峰值=940 Mbps(更稳定);连接超时率=0.15%。
- 下面为前后对比表(单位:ms / % / Mbps):
| 指标 | 优化前 | 优化后 |
| p95 延迟 | 135 ms | 48 ms |
| 丢包率 | 1.20 % | 0.04 % |
| 吞吐峰值 | 780 Mbps | 940 Mbps |
| 连接超时率 | 2.8 % | 0.15 % |
- 执行清单:部署监控、调整 sysctl、部署 fq_codel、配置 BGP 冗余、上线 CDN 与清洗服务、建立自动化告警。
- 总结:通过端到端(内核、队列、链路、上游协同、CDN、DDoS 防护)联合优化,可显著降低香港 CN2 高峰期的丢包与延迟风险,保证业务 SLA。
来源:优化指南降低香港cn2带宽高峰期卡的丢包与延迟风险