
跨境傳輸速度上不去很多時候不是帶寬不夠是TCP協議棧的參數沒調對。默認配置是為低延遲、低丟包的網絡設計的放到跨太平洋鏈路上就是水土不服。調哪些參數能明顯改善速度列幾個實測有效的方向。一、先把擁塞控制算法換了這是改動最小、效果最明顯的一步。Linux 4.9以上內核內置了BBR默認沒開目前大多數服務器還在跑cubic。cubic的邏輯是“丟包等于擁塞”檢測到丟包就主動降速。跨境鏈路丟包是常態cubic會頻繁踩剎車帶寬買再多也跑不上去。BBR的思路不一樣它持續測量鏈路的實際帶寬和最小RTT在兩者之間找平衡點——把帶寬跑滿同時盡量不讓數據在中間設備緩存里堆積。實測數據BBR部署后吞吐量提升20%-50%的情況很常見。開啟方式只需要兩行配置textnet.core.default_qdisc fq net.ipv4.tcp_congestion_control bbr寫進/etc/sysctl.conf執行sysctl -p生效。用sysctl net.ipv4.tcp_congestion_control確認切換成功。二、緩沖區大小要擴跨境場景下默認值不夠用TCP傳輸依賴接收窗口和發送窗口窗口大小決定了單條連接能跑多快。窗口太小就算帶寬充足數據也發不出去。公式是吞吐量 窗口大小 / RTT。RTT 200ms的鏈路上要達到100Mbps吞吐量窗口需要2.5MB。默認的緩沖區往往只有幾十KB遠不夠用。跨境場景下把緩沖區擴到16MB比較穩妥留足余量textnet.core.rmem_max 134217728 net.core.wmem_max 134217728 net.ipv4.tcp_rmem 4096 87380 134217728 net.ipv4.tcp_wmem 4096 65536 134217728四個參數的含義rmem/wmem分別是接收和發送緩沖區max是上限后面的三個值是“最小-默認-最大”。tcp_rmem和tcp_wmem的默認值和最大值決定了每條TCP連接的實際可用窗口。三、TIME_WAIT積壓會拖慢建連速度大量短連接場景下主動關閉連接的一端會積累大量TIME_WAIT狀態。系統默認TIME_WAIT要等2MSL約60秒才能釋放端口端口資源消耗快了新連接就可能建不起來。兩個參數配合使用textnet.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_fin_timeout 30tcp_tw_reuse允許新連接復用TIME_WAIT狀態的socket注意只在出站連接有效tcp_fin_timeout縮短FIN-WAIT-2的等待時間。同時檢查本地端口范圍夠不夠textnet.ipv4.ip_local_port_range 1024 65000默認范圍通常是32768-60999高并發場景下可能不夠用擴到1024-65000能緩解端口耗盡。四、隊列長度調大防止高并發時連接被丟棄高并發場景下連接隊列滿了新連接就會被丟掉用戶端表現為“連不上”。兩個隊列參數值得調textnet.core.somaxconn 65535 net.ipv4.tcp_max_syn_backlog 65535 net.core.netdev_max_backlog 10000somaxconn控制已完成三次握手的連接隊列長度tcp_max_syn_backlog控制半連接隊列SYN_RECV狀態長度netdev_max_backlog是網卡收包隊列。默認值128和1024流量稍微上來就不夠用。注意sysctl調了之后應用層也要同步調。Nginx的listen指令、Redis的tcp-backlog、Java的ServerSocket構造函數都有自己的backlog參數最終取的是sysctl值和應用層值兩者中的較小值。系統調大而應用沒調等于白改。一次完整的參數配置把下面這些寫進/etc/sysctl.conf然后sysctl -p生效textnet.core.default_qdisc fq net.ipv4.tcp_congestion_control bbr net.core.rmem_max 134217728 net.core.wmem_max 134217728 net.ipv4.tcp_rmem 4096 87380 134217728 net.ipv4.tcp_wmem 4096 65536 134217728 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_fin_timeout 30 net.ipv4.ip_local_port_range 1024 65000 net.core.somaxconn 65535 net.ipv4.tcp_max_syn_backlog 65535 net.core.netdev_max_backlog 10000調完后用iperf3跑個測試對比前后數據能看到明顯變化。跨境鏈路上這幾個參數帶來的提升比其他花哨的優化手段都實在。