1. 问题定位:确认“慢”的真实表现
• 收集症状:网页加载慢、TCP重传多、丢包率高、时延高(ping/trace)。
• 使用工具:ping、mtr/traceroute、tcpdump、ss/ss -s、iftop、vnstat。
• 指标量化:RTT、丢包%、吞吐(Mbps)、并发连接数、TCP重传次数。示例:香港VPS到广州RTT=28ms、丢包=1.4%、平均吞吐=40Mbps。
• 记录时间窗:高峰/非高峰对比,观察是否为链路拥塞或链路策略问题。
• 初步结论:若丢包高且重传多,多为物理链路或ISP路由问题;若RTT稳定但吞吐低,可能是拥塞控制或socket缓冲区问题。
2. 路由优化实践:从BGP到本地路由调整
• 验证路由路径:使用traceroute或bgp.he.net查看AS路径,检查是否绕行第三方区域。
• 与上游沟通:向带宽供应商申请BGP社区或更改出口策略,优先直连中国大陆或香港本地交换点(HKIX)。
• 私有对等:对于重要流量,考虑与ISP建立私人直连或跨境专线,减少中间AS跳数。
• 调整MTU与DF策略:若路径MTU不一致导致分片,查看ping -M do -s 1472。示例:将MTU设为1500或根据PMTUD调整。
• 路由备份:配置多个出口并使用策略路由或BFD快速故障转移,避免单链路拥塞导致的整体访问慢。
3. 拥塞控制:选择与调优TCP算法
• 算法选择:Linux内核常见有cubic、reno、bbr;BBR在高带宽高延迟链路效果明显。
• 实践命令:sysctl -w net.ipv4.tcp_congestion_control=bbr(需内核支持)。
• Socket缓冲区:调高net.core.rmem_max=16777216、net.core.wmem_max=16777216、tcp_rmem/tcp_wmem。
• 测试对比:开启BBR后实测吞吐从40Mbps提升到120Mbps(相同RTT与丢包条件下)。
• 避免副作用:监控延迟抖动与队列长度,必要时结合fq_codel或cake进行队列管理。
4. 队列管理与流量整形(QoS)
• qdisc选择:优先使用fq_codel或cake来减少缓冲膨胀(bufferbloat)。
• HTB+SFQ:在出口链路有限制时使用HTB做带宽划分并配合sfq公平分配。
• 实施示例:tc qdisc add dev eth0 root cake bandwidth 500mbit nat dual-srchost。
• 排队与优先级:为实时业务(音视频、API)设置优先队列,HTTP/HTTPS保持中等优先。
• 监控:使用tc -s qdisc、iftop和bmon观察队列长度与丢包情况,保证延迟可控。
5. CDN及边缘优化与DDoS防护结合
• CDN策略:将静态资源放到CDN,减轻源站出口压力并降低跨境请求数。
• 缓存规则:合理设置Cache-Control、Expires、Gzip压缩和图片WebP转换来减少带宽。
• DDoS防护:结合云端WAF与流量清洗(如流量清洗池),设置阈值自动拉黑异常IP。
• 弹性扩容:在流量激增时使用弹性带宽或多机房负载均衡。
• 日志与溯源:启用访问日志和Netflow,配合SIEM分析攻击来源并调整黑白名单。
6. 真实案例:香港VPS到深圳访问慢的排查与优化
• 初始现象:客户A报告香港VPS访问深圳用户网页加载超时,用户体验差。
• 采集数据:ping hk->sz=35ms、丢包2.1%、mtr显示第5跳到ISP链路丢包高。
• 路由沟通:联系带宽商后发现通过第三方ISP绕行,新改路由到直连CN2线路后RTT降至18ms、丢包<0.2%。
• 拥塞控制调优:在Ubuntu 20.04上启用BBR、调整tcp_rmem/tcp_wmem,吞吐从50Mbps到150Mbps。
• 结果:综合优化后页面TTFB降低45%,用户满意度提升,后续加入CDN进一步降低源站负载。
7. 示例服务器配置表与Sysctl参数
• 下表为示例服务器配置与关键参数,便于复制参考与比对。
| 项目 | 示例值 |
| CPU | Intel Xeon E5-2620 v4 2.1GHz x8 |
| 内存 | 16GB DDR4 |
| 网络接口 | 1Gbps 公网(可达 500Mbps 持续) |
| 操作系统 | Ubuntu 20.04, Kernel 5.4 |
| TCP 拥塞控制 | bbr |
| MTU | 1500 |
| sysctl 关键项 | net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 87380 16777216 |
| 典型延迟(HK->SZ) | 优化前 35ms / 丢包2.1% → 优化后 18ms / 丢包0.2% |
来源:运维技巧香港服务器访问慢 包括路由优化和拥塞控制实践