Alibaba Cloud Linux 2系統(tǒng)中TCP擁塞控制算法BBR對網(wǎng)絡(luò)性能的影響
問題描述
符合下列條件的ECS實例中,內(nèi)核TCP擁塞控制算法默認為BBR算法:
鏡像:aliyun_2_1903_64_20G_alibase_20190619.vhd及之前所有的鏡像版本。
內(nèi)核:kernel-4.19.48-14.al7及之前所有的內(nèi)核版本。
該算法會在CPU使用率高、網(wǎng)絡(luò)數(shù)據(jù)包(PPS)高的情況下,對網(wǎng)絡(luò)性能產(chǎn)生一定影響,例如,Redis數(shù)據(jù)庫的性能降低。
問題原因
Alibaba Cloud Linux 2系統(tǒng)的內(nèi)核TCP擁塞控制目前支持Reno 、BBR、cubic三種算法,在不同網(wǎng)絡(luò)場景下,控制性能會有差異。BBR算法估算當前連接的BW(吞吐)和RTT(時延)以調(diào)整擁塞窗口。BBR算法依賴于TCP連接的封裝(pacing)功能,而TCP的封裝實現(xiàn)有下列兩種方式:
若網(wǎng)卡設(shè)備使用qdisc的tc-fq(Fair Queue Traffic Policing)調(diào)度,則直接復(fù)用tc-fq調(diào)度中基于流的封裝。
若網(wǎng)卡設(shè)備沒有使用qdisc的tc-fq調(diào)度,則TCP改用其內(nèi)部的封裝方式。
TCP協(xié)議內(nèi)部的封裝方式依賴于Linux系統(tǒng)的高精度計時器(hrtimer),每個連接的高精度計時器會額外增加CPU消耗。在CPU使用率和網(wǎng)絡(luò)PPS均高的情況下,BBR算法對網(wǎng)絡(luò)性能的影響更加明顯。在CPU空閑并且網(wǎng)絡(luò)PPS低的情況下,影響不大。
解決方案
阿里云提醒您:
?如果您對實例或數(shù)據(jù)有修改、變更等風險操作,務(wù)必注意實例的容災(zāi)、容錯能力,確保數(shù)據(jù)安全。
?如果您對實例(包括但不限于ECS、RDS)等進行配置與數(shù)據(jù)修改,建議提前創(chuàng)建快照或開啟RDS日志備份等功能。
?如果您在阿里云平臺授權(quán)或者提交過登錄賬號、密碼等安全信息,建議您及時修改。
臨時解決方案
請參考下列TCP擁塞控制算法的建議,選擇符合您業(yè)務(wù)實際情況的解決方式:
?如果ECS實例中的應(yīng)用僅對內(nèi)網(wǎng)提供服務(wù),建議參考下列命令,修改TCP擁塞控制算法為cubic。因為內(nèi)網(wǎng)環(huán)境帶寬高、時延低。
sysctl -w net.ipv4.tcp_congestion_control=cubic
sh -c "echo 'net.ipv4.tcp_congestion_control=cubic'" >> /etc/sysctl.d/50-aliyun.conf
?如果ECS實例中的應(yīng)用對外提供服務(wù),建議繼續(xù)使用BBR算法,但需要將相應(yīng)網(wǎng)卡的調(diào)度策略修改為tc-fq。修改的命令如下。
tc qdisc add dev [$Dev] root fq
說明:[$Dev]指需要調(diào)整的網(wǎng)卡名稱。
使用BBR算法時,不建議使用其他非tc-fq的調(diào)度策略。因為這樣會占用更多額外的CPU資源。
固化解決方案
升級ECS實例的內(nèi)核至kernel-4.19.57-15.al7或之后的版本。
更多信息
Alibaba Cloud Linux 2系統(tǒng)支持不同的連接使用不同的擁塞算法,可以通過網(wǎng)絡(luò)命名空間(Net Namespace)進行控制。如果一臺ECS實例中存在多個容器,且分屬不同的網(wǎng)絡(luò)命名空間,有些容器只對外提供服務(wù),另一些容器只對內(nèi)提供服務(wù),則可以對這些容器分別設(shè)置不同的擁塞控制算法。
相關(guān)文檔
適用于
?云服務(wù)器ECS
如果您有其他問題,可以聯(lián)系北京優(yōu)勝智連阿里云代理商,為您提供一對一專業(yè)全面的技術(shù)服務(wù),同時新/老阿里云會員,均可享受我公司代理商價格,歡迎咨詢!

