本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
Alibaba Cloud Linux 2系统的内核TCP拥塞控制目前支持Reno、BBR和Cubic三种算法,在不同的网络场景下,这些算法的控制性能将会有所差异。本文将介绍Alibaba Cloud Linux 2系统中TCP拥塞控制算法BBR(Bottleneck Bandwidth and RTT)对网络性能的影响原因及相应的解决方案。
问题描述
符合下列条件的ECS实例中,默认的TCP拥塞控制算法BBR在CPU使用率高和网络数据包(PPS)较高的情况下,对网络性能产生影响。例如,Redis数据库的性能降低。
镜像:
aliyun_2_1903_64_20G_alibase_20190619.vhd
及之前版本的镜像。内核:
kernel-4.19.48-14.al7
及之前版本的内核。
问题原因
使用内核TCP拥塞控制默认BBR算法时网卡qdisc
没有使用fq
调度器,TCP协议栈将采用其内部实现的高精度的计时器(hrtimer),每个连接的高精度计时器将额外增加CPU的消耗。
解决方案
您可以根据业务的实际情况选择以下方案解决问题。
修改TCP拥塞控制算法。
如果ECS实例中的应用仅对内网提供服务,建议参考下列命令,修改TCP拥塞控制算法为cubic。因为内网环境带宽高、时延低。
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic echo "net.ipv4.tcp_congestion_control=cubic" | sudo tee -a /etc/sysctl.d/50-aliyun.conf
修改相应网卡的调度策略。
如果ECS实例中的应用对外提供服务,建议继续使用BBR算法,但需执行以下命令,将相应网卡的调度策略修改为
tc-fq
。<$DEV>
需替换为要调整的网卡名称。sudo tc qdisc add dev <$DEV> root fq
在使用BBR算法时,不建议使用其他非
tc-fq
的调度策略,因其会占用额外的CPU资源。升级ECS实例的内核至最新的版本,彻底解决该问题。
警告升级内核可能会出现兼容性和稳定性问题,建议您查看Alibaba Cloud Linux 2镜像发布记录了解具体内核功能后谨慎进行操作。
重启实例将导致您的实例暂停运行,这可能引发业务中断和数据丢失。因此,建议您在执行此操作之前备份关键数据,并选择在非业务高峰期进行。
执行以下命令,升级内核到最新版本。
sudo yum update kernel
执行以下命令,重启实例使配置生效。
sudo reboot