首页/系统与基础设施/自动化运维速查/大文件分发的带宽控制
批量执行与作业50 条

大文件分发的带宽控制

大文件分发的关键不是能否传完,而是不影响同链路上的其他业务。控制手段分三层:传输层限速(rsync --bwlimit、scp -l、curl --limit-rate)、网络层限速(tc、云带宽包)、时间与并发控制(低峰窗口、限制并行传输数)。同时要注意压缩是否有效、是否分片传输、以及断点续传与校验。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​‌‌​​​‌‌​​​​‌​‌‌‌​​‌​​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​‌‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​​​​‌​‌‌​‌‌‌​​‌‌‌​​‌‌​‌‌​​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌​‌‌‌​​‌‌​​‌​​​‌‌‌​‌‌‌​‌‌​‌​​‌​‌‌​​‌​​​‌‌‌​‌​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌​‌‌​​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

大文件传输的带宽控制

大文件分发的关键约束不是能不能传完,而是不要吃掉同链路上其他业务所需的带宽。控制手段分三层:传输层限速(rsync 的 --bwlimit、scp 的 -l、curl 的 --limit-rate)、网络层限速(Linux tc 的 tbf 队列、云平台带宽包)、时间与并发控制(放到业务低峰、限制同时传输的份数)。此外还要判断压缩是否值得(已压缩内容再压缩只消耗 CPU)、是否需要分片并发,以及断点续传与落地校验。

基本信息

限速参数rsync --bwlimit(KB/s)、scp -l(Kbit/s)、curl --limit-rate、tc tbf
单位陷阱bwlimit 按 KB/s,scp -l 按 Kbit/s,两者相差 8 倍
并发控制限制并行的传输份数,而不是让每一路都跑满
前置检查目标端剩余空间与磁盘写入速度

典型使用场景

  • 跨机房同步镜像或安装包,链路与在线业务共用
  • 夜间窗口向数百台主机分发大体积文件
  • 从云端拉取数据集,出口带宽按量计费
  • 目标端磁盘较慢,传输速度需要匹配写入速度
  • 同步必须在窗口内完成,因此速度不能一味压低

限速与分片写法

限速与分片写法
rsync -av --bwlimit=20480 bigfile.iso host:/data/      # 约 20 MB/s 上限
scp -l 80000 bigfile.iso host:/data/                   # scp 限速单位是 Kbit/s,约 10 MB/s
curl --limit-rate 10M -o big.iso https://example.com/big.iso   # 单连接限速
split -b 1G big.iso part- && rsync -av --bwlimit=20480 part-* host:/data/  # 分片便于续传
tc qdisc add dev eth0 root tbf rate 100mbit burst 2mb latency 50ms  # 网卡出口整体限速

限速手段与单位

手段作用点单位与注意
rsync --bwlimit传输进程KB/s,按秒平滑
scp -l传输进程Kbit/s,容易与 KB 混淆
curl --limit-rate单连接支持 K/M/G 后缀
tc tbf网卡出口影响该网卡所有流量
云带宽包云平台侧与业务共享,注意计费方式
压缩只在内容是文本时有效。磁盘镜像、压缩包、加密数据已接近熵上限,再叠加压缩只增加 CPU 占用而几乎不减小体积,这类内容应关闭压缩选项。
传输中途目标端磁盘写满会失败并留下不完整文件。分发前先检查剩余空间,并保证接收侧采用临时文件加原子改名的方式落地,避免半截文件被后续流程当成成品使用。

易错点

  • 把 --bwlimit 当作 MB/s 使用,实际限速相差 8 倍,窗口估算完全失真
  • 多路传输各自满速并发,链路被占满,在线业务请求超时
  • 对已压缩的大文件仍启用压缩,CPU 上升而传输量几乎不变
  • 目标端磁盘空间不足导致中途失败,残留半截文件被后续流程误用
  • 限速压得过低导致同步无法在业务高峰前结束,与高峰叠加

数据来源与参考

  • rsync 手册页:--bwlimit 与 --partial
  • OpenSSH 手册 scp(1):-l 限速参数
  • Linux 手册页 tc-tbf(8) 与 curl 手册页 --limit-rate

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/large-file-transfer-bandwidth-control.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​‌‌​​​‌‌​​​​‌​‌‌‌​​‌​​‌‌​​‌‌‌​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​‌‌​​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​​​​‌​‌‌​‌‌‌​​‌‌‌​​‌‌​‌‌​​‌‌​​‌‌​​‌​‌​‌‌‌​​‌​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌​‌‌‌​​‌‌​​‌​​​‌‌‌​‌‌‌​‌‌​‌​​‌​‌‌​​‌​​​‌‌‌​‌​​​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌‌​‌​​​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌​‌‌​​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​