最近很多小伙伴都反映腾讯云轻量服务器测速满满的,即使是晚高峰也能在Speedtest跑到多少多少balabala......但是加载Youtube视频却是一卡一卡的断流严重,为什么呢?
经过我们上手测试,通过对Youtube低谷时段的断流情况和速度图都是匀速30Mbps左右的判断,事因腾讯云轻量应用服务器使用的限速策略,实质上也是一种QOS限速,当网关检测到上行流量在一定周期内超出本周期的限制时就会采取策略主动丢包以降低流量速率,等待下一个统计周期才会解除丢包策略,这样的一个周期一般称为惩罚周期。如图是在腾讯云香港轻量与广州CVM之间的iperf3测试(香港发包),可见其限速周期(时长时短)。
中国香港 -> 广州 惩罚周期较长,iperf3测试出现超过0.2秒断点
这在一般大陆内部使用问题不大,但是在丢包情况相对严重的时候会放大问题,断流严重以至于速度几乎不更新,视频也是卡卡的,当断点遇上视频进度条的拖拽就会严重影响游戏体验!(Youtube测试环境,广州电信100M宽带)
限速方式有多种,如hbt、cbq等,本文使用hbt
# 删除eth0原有的tc队列,如果有配置过tc,请不要直接使用!
# tc qdisc del dev eth0 root
# 为eth0网口添加新的tc队列
# 默认流量分类为0可加上default {int}将默认分类设为其他值
tc qdisc add dev eth0 root handle 1: htb
# 设置根分类限速,将限制eth0网口30Mbps,有效避免腾讯云轻量惩罚机制
# rate为保证带宽,ceil为最大带宽,可选prio {int}设置优先级
tc class add dev eth0 parent 1: classid 1: htb rate 30mbit ceil 30mbit
# 可选设置其他分类(class中的1:x就是分类x,默认分类中的0可省略)
# tc class add dev eth0 parent 1: classid 1:2 htb rate 20mbit ceil 20mbit prio 2
# 对本文所用到的iperf3端口流量用iptables进行标记并处理
# iptables -t mangle -A POSTROUTING -p tcp --sport 12345 -j MARK --set-mark 2
# iptables -t mangle -A POSTROUTING -p tcp --sport 12345 -j RETURN
# 使用过滤器filter将iptables标记的mark 2归类为class 1:2
# tc filter add dev eth0 parent 1:0 protocol ip handle 2 fw classid 1:2
执行上述的脚本之后,如果装有bbr的Linux,eth0网口的队列算法将会从fq变为qdisc,重启之后tc规则会丢失,同时全局限速30Mbps
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。