SCP与Rsync下载速度异常缓慢的原因及提速方案咨询
SCP与Rsync下载速度异常缓慢的原因及提速方案咨询
这问题我之前帮不少跨洲际传输的用户解决过,咱们一步步拆解原因和对应的提速方案:
一、为什么白天SCP/Rsync速度远低于Speedtest?
主要有这几个核心原因:
- 国际链路拥堵与路由优先级差异:Speedtest本质是测你和本地ISP节点的带宽,但SCP/Rsync走的是跨印度洋到美国的国际链路——白天是全球网络高峰,这条链路的带宽被大量占用,而且很多ISP会给HTTP/HTTPS(Speedtest用的协议)更高的优先级,SSH流量(SCP/Rsync基于SSH)则被限流,导致实际可用带宽极低。
- TCP参数不匹配长距离链路:默认的TCP窗口大小、拥塞控制算法是针对低延迟的本地网络设计的。跨洲际网络延迟高(印度到美国大概200-300ms),小窗口会导致吞吐量上不去;加上白天链路丢包率上升,默认的拥塞算法(比如CUBIC)会频繁降速,进一步拉低速度。
- SSH加密的隐性影响:虽然加密本身开销不大,但如果你的本地机器白天CPU负载较高,SSH的加密/解密过程会成为瓶颈——你说远程服务器没问题,大概率是本地白天有其他高负载进程占用了CPU资源。
二、可以试试这些提速方法
1. 调整SSH的TCP参数优化长距离传输
直接在SSH命令里加参数,强制优化TCP行为:
# SCP命令示例,增大窗口+设置吞吐量优先QoS scp -C -o TCPKeepAlive=yes -o ServerAliveInterval=30 -o WindowSize=131072 -o IPQoS=throughput user@remote-host:/path/to/large-file ./ # Rsync命令示例,基于SSH传输时同样加参数 rsync -avz -e "ssh -o TCPKeepAlive=yes -o WindowSize=131072 -o IPQoS=throughput" user@remote-host:/path/to/folder ./local-folder
解释下关键参数:
-C(SCP)/-z(Rsync):开启传输压缩,对文本、文档类文件效果明显,能减少传输的数据量。WindowSize=131072:增大TCP窗口,适配高延迟链路的吞吐量需求。IPQoS=throughput:告诉路由器优先保证传输吞吐量,而非低延迟。TCPKeepAlive/ServerAliveInterval:防止链路因长时间无数据被ISP断开。
2. 启用TCP BBR拥塞控制算法
如果你的本地机器和远程服务器都是Linux系统,BBR算法专门针对高延迟、高带宽的链路优化,能显著提升吞吐量:
# 在本地和远程服务器上临时启用BBR(重启后失效) echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
启用后再用SCP/Rsync传输,白天的速度应该会有明显提升。
3. 更换更适合跨洲际传输的工具
如果调整参数后效果有限,可以试试这些工具:
- Rclone:支持多种传输协议,内置了跨区域传输的优化策略,配置简单,对大文件友好。
- Wget/Curl:如果远程文件可以通过HTTP/HTTPS访问,用它们试试——ISP通常对HTTP流量的优先级更高,可能避开SSH的限流。
- Rsync的进阶参数:针对大文件,调整块大小减少交互次数:
rsync -avz --block-size=1M --progress user@remote-host:/path/to/large-file ./
4. 检查本地CPU负载
白天打开终端运行top命令,看看CPU使用率是否过高——如果有进程占用了大量CPU,关闭它们再试试传输,因为SSH的加密解密需要CPU资源。
备注:内容来源于stack exchange,提问作者Guddu
相关产品推荐
相关产品推荐

