1.
评估需求与查看供应商政策
- 步骤1:统计业务类型与峰值:列出服务(网站/下载/视频/游戏)和并发/带宽预估(例如并发1000,平均每用户200KB/s)。
- 步骤2:阅读VPS流量条款:登录控制台/合同,确认“不限流量”是否有“突发/峰值限制、宽带共享或流量清流(throttling)”条款并截屏保存。
- 步骤3:与售后确认:使用工单/聊天索要峰值策略(如“可突发到5Gbps,持续10分钟”),并记录确认时间与截图。
2.
基础监控与流量测试工具安装
- 安装监控工具(Debian/Ubuntu示例):sudo apt update && sudo apt install -y iperf3 vnstat iftop nload curl。
- 用法示例:在服务器端启动 iperf3 -s;在本地或另一节点运行 iperf3 -c SERVER_IP -P 10 -t 60 来测峰值。
- 持续统计:启用 vnstat 服务 sudo apt install vnstat && sudo systemctl enable --now vnstat,使用 vnstat -m 查看月流量,vnstat -tr 60 测试实时速率。
3.
实施出口(egress)带宽控制:使用 tc + htb
- 原理说明:Linux 出口流量可通过 tc qdisc htb 精确控制,入口需用 ifb 转发。
- 常用命令(以 eth0 为例):
sudo tc qdisc add dev eth0 root handle 1: htb default 30
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1000mbit ceil 1000mbit
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 800mbit ceil 1000mbit
sudo tc class add dev eth0 parent 1:1 classid 1:20 htb rate 200mbit ceil 1000mbit
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 80 0xffff flowid 1:10(按端口分流)。
- 调试:用 tc -s qdisc 查看统计,用 iperf3 重测并观察类流量分配。
4.
入口流量控制(ingress)与 ifb 使用
- 因为内核只能直接限出,需用 ifb 把 ingress 重定向:sudo modprobe ifb;sudo ip link add ifb0 type ifb;sudo ip link set dev ifb0 up。
- 重定向命令:sudo tc qdisc add dev eth0 handle ffff: ingress;sudo tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0。
- 在 ifb0 上用 tc 配置 htb(同出口示例)来限制入口速率并设置 burst/ceiling。
5.
应用层限流:Nginx 与连接限制
- nginx 限速配置(http 块):
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;
limit_req zone=req_zone burst=20 nodelay;
- 连接限制(server 或 location):
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_conn addr 10;
- 对大文件下载加速缓存或分片,配合 X-Accel-Redirect 实现后端流量分担。完成配置后 sudo nginx -t && sudo systemctl reload nginx。
6.
高峰缓解策略:CDN、缓存、负载均衡与告警自动化
- CDN:把静态资源(图片/JS/CSS)全部上 CDN,设置长缓存头(Cache-Control),降低源站带宽峰值。
- 负载均衡:使用多台台湾或近海节点做反向代理,利用轮询/least_conn 分摊瞬时流量。
- 自动告警:用 vnstat 定时监测并写入脚本发送告警,示例 crontab 每5分钟 vnstat -tr 60 >> /var/log/netwatch.log;结合 simple mail 或 webhook 推送到钉钉/Slack。
7.
Q1:如何快速验证供应商是否会在峰值时限速?
- 答:用 iperf3 并行多线程多端口从多个地区(或多台Cloud节点)向VPS并发测试 1-5 分钟,观察瞬时带宽是否被压平;同时记录控制台或合约中的“burst”条款并向客服索要确认,测试与条款对比即可判断是否会限速。
8.
Q2:如果不方便改内核/使用 tc,有哪些替代方案?
- 答:可以把静态内容全部交给CDN或对象存储,使用反向代理限速插件(如Nginx limit_*)、在应用层实现速率限制与排队,或在云端配置流量镜像到其它节点做削峰,这些方法对不改内核的场景同样有效。
9.
Q3:如何针对短时突发做最小干预的限流配置?
- 答:在 tc htb 中给关键业务设置较高的 ceil(峰值上限)并设置小的 rate(长期保证带宽),同时在 nginx 设置 burst 参数允许短时突发,通过监控阈值触发临时提高 ceil 或启用更多后端节点实现平滑过峰。
来源:选择台湾不限流量vps时带宽峰值管理的最佳实践