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