V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jolly336
V2EX  ›  问与答

Rsync 传输大文件性能问题

  •  
  •   jolly336 · 130 天前 · 1344 次点击
    这是一个创建于 130 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 Rsync 在 Mac 电脑上拉服务器上的单个大文件,文件大小 600MB~2G 左右,文件格式 ZIP ,服务端用的 rsync daemon tcp 运行,拉取是增量拉取的,是在服务器修改 ZIP 里的一些 entry 然后拉的,发现 rsync diff 实际拉取了 6M ,但拉取耗时 7s ,Mac 电脑的下载速度是 40Mb/s ,算下来 rsync 的速度才有 6M/7s = 0.85MB/s ,这个如何优化?

    目前的想法有这几个:

    1. 调整 rsync 的 --block-size 大小,调整的小一点,测下来能快一点,但这个还是有限;
    2. 拆分服务端的 ZIP 文件,Mac 并行拉取,但这个有一些问题,比如拆分开拉 rsync 要传输的数据量变多了,并行会存在电脑 CPU 、IO 竞争切换,效果会不如直接拉 ZIP ;

    还有啥好办法,求指点

    17 条回复    2024-07-12 11:07:47 +08:00
    ferock
        1
    ferock  
       130 天前 via Android
    加上 -W 参数,减少校验试试
    jolly336
        2
    jolly336  
    OP
       130 天前
    @ferock -W, --whole-file copy files whole (without rsync algorithm) 就真成了 scp 了,会 disable 增量传输,文件太大了,是不行的
    dann73580
        3
    dann73580  
       130 天前 via Android
    换 rclone 才是真解,可以多线程,大文件还能配置分块上传。
    yingxiangyu
        4
    yingxiangyu  
       130 天前
    换 http ,起了端口直接 wget
    adrianzhang
        5
    adrianzhang  
       130 天前
    瓶颈是啥? IO 还是 CPU ?确定后针对性解决呗。
    T0m008
        6
    T0m008  
       130 天前
    单个文件还要增量传输?不是多此一举吗?要么-W 要么直接 scp, 别折腾了
    june4
        7
    june4  
       130 天前
    起个 http 文件服务不就是可以断点继传了,wget 和 aria 之类的都可以断线自动重连继传。
    jolly336
        8
    jolly336  
    OP
       130 天前
    @T0m008 scp 没有增量传输了,全部传,Mac 网速一般,这个没法改变,还得要增量拉
    jolly336
        9
    jolly336  
    OP
       130 天前
    @dann73580 server 是部署的 K8S 这套,也能用吗?这个支持增量传吗?还有在本地 Mac 网速有限的情况下,能最快拉回文件
    jolly336
        10
    jolly336  
    OP
       130 天前
    @adrianzhang 测试了下,Mac 网速不好时 40Mb/s ,瓶颈在网速 IO 这,网速比较高 1000Mb/s 时,瓶颈在服务器磁盘 IO 上
    jolly336
        11
    jolly336  
    OP
       130 天前
    @yingxiangyu 这个很原始,没法做到增量 diff 拉取呐
    adrianzhang
        12
    adrianzhang  
       130 天前
    @jolly336 网速瓶颈的解决,可以依靠 tcp over udp 或 quic 。磁盘 io 解决是把文件直接就放 ram 盘里。
    T0m008
        13
    T0m008  
       130 天前
    @jolly336 你没搞明白吧,单个文件就能把带宽跑满了,你再增量有什么用?你瓶颈在 io 上,增量反而会更慢的
    Aurorataro
        14
    Aurorataro  
       130 天前
    @jolly336 #9 你的需求适合 rclone copy
    happyxhw101
        15
    happyxhw101  
       130 天前
    据我调研所知,之前专门调研过,rsync ,rclone 都不支持单文件增量,只有 syncting 支持 apeend 形式的增量,也就是虽然 diff 只有 6M ,但是需要把整个文件重新同步一次
    jolly336
        17
    jolly336  
    OP
       128 天前
    感谢各位大佬的解答,目前看来各种工具还是只有 Rsync 能满足增量拉取,只是性能有点问题,在增量拉取单个大文件时 sender 端要挨个数据块计算 checksum ,这期间网络是空闲的,到传输变动字节数据时网速还是可以的,所以耗时就在 rsync 只会单核 CPU 工作,checksum 拉长了耗时。
    目前准备切片并行传的试下,但这种会出现资源竞争,整体耗时有时候会劣化。不知道还有啥好思路优化?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2676 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 10:55 · PVG 18:55 · LAX 02:55 · JFK 05:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.