从300ms到80ms:我的海外服务器延迟优化实战记录
上周帮客户部署新加坡服务器时,国内访问延迟高达300ms+,游戏服务直接卡成PPT。经过三天折腾终于压到80ms左右,把踩过的坑和有效方案分享给大家。
1. 先搞清楚延迟从哪来
很多人一上来就折腾加速器,其实应该先用traceroute
看看路由路径。我遇到的情况特别典型:
traceroute game-server.sg
3 * * *
4 202.97.xx.xx (202.97.xx.xx) 142ms
5 202.97.xx.xx (202.97.xx.xx) 289ms
6 * * *
看到没?卡在中国电信国际出口(202.97开头的IP),这种时候换什么加速器都没用。
2. 选对机房比配置重要
测试了三大云服务商的新加坡节点:
- AWS:走日本绕路,平均220ms
- 阿里云:直连但晚高峰丢包
- 腾讯云:走CN2线路,稳定160ms
最后选了家小众IDC的CN2 GIA线路,虽然贵30%,但延迟直接砍半。这里有个技巧:让服务商提供测试IP,自己ping
一周再决定。
3. TCP优化是隐藏加分项
在/etc/sysctl.conf
加了这些参数后,FPS游戏手感明显变稳:
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 16777216
net.ipv4.tcp_congestion_control = bbr
注意BBR要内核4.9+,老系统得先升级。有次在CentOS 7上忘检查内核版本,调参调了个寂寞…
4. 终极方案:边缘加速
对于实时性要求变态高的场景(比如竞技游戏),我在东京和香港各加了台边缘服务器做流量中转。用iptables
做DNAT转发:
iptables -t nat -A PREROUTING -p tcp --dport 30000:40000 -j DNAT --to-destination 原服务器IP
sysctl -w net.ipv4.ip_forward=1
实测香港节点中转后,华南地区延迟降到60ms以内。不过要注意中转机的带宽成本,有次没设限流被DDoS打爆账单,血泪教训。
最后说个玄学发现:周四晚上8点测速总比周末稳定,可能国际链路也有”晚高峰”?大家有什么压延迟的野路子,欢迎在评论区Battle~
感谢分享!电信国际出口那个真的是太真实了,每次看到202.97开头的IP就知道要凉😂
CN2 GIA线路确实稳,不过贵得肉疼…