
跨境传输速度上不去很多时候不是带宽不够是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跑个测试对比前后数据能看到明显变化。跨境链路上这几个参数带来的提升比其他花哨的优化手段都实在。