使用 Rsync 在 Mac 电脑上拉服务器上的单个大文件,文件大小 600MB~2G 左右,文件格式 ZIP ,服务端用的 rsync daemon tcp 运行,拉取是增量拉取的,是在服务器修改 ZIP 里的一些 entry 然后拉的,发现 rsync diff 实际拉取了 6M ,但拉取耗时 7s ,Mac 电脑的下载速度是 40Mb/s ,算下来 rsync 的速度才有 6M/7s = 0.85MB/s ,这个如何优化?
目前的想法有这几个:
还有啥好办法,求指点
1
ferock 168 天前 via Android
加上 -W 参数,减少校验试试
|
2
jolly336 OP @ferock -W, --whole-file copy files whole (without rsync algorithm) 就真成了 scp 了,会 disable 增量传输,文件太大了,是不行的
|
3
dann73580 168 天前 via Android
换 rclone 才是真解,可以多线程,大文件还能配置分块上传。
|
4
yingxiangyu 168 天前
换 http ,起了端口直接 wget
|
5
adrianzhang 168 天前
瓶颈是啥? IO 还是 CPU ?确定后针对性解决呗。
|
6
T0m008 168 天前
单个文件还要增量传输?不是多此一举吗?要么-W 要么直接 scp, 别折腾了
|
7
june4 168 天前
起个 http 文件服务不就是可以断点继传了,wget 和 aria 之类的都可以断线自动重连继传。
|
10
jolly336 OP @adrianzhang 测试了下,Mac 网速不好时 40Mb/s ,瓶颈在网速 IO 这,网速比较高 1000Mb/s 时,瓶颈在服务器磁盘 IO 上
|
11
jolly336 OP @yingxiangyu 这个很原始,没法做到增量 diff 拉取呐
|
12
adrianzhang 168 天前
@jolly336 网速瓶颈的解决,可以依靠 tcp over udp 或 quic 。磁盘 io 解决是把文件直接就放 ram 盘里。
|
14
Aurorataro 168 天前
@jolly336 #9 你的需求适合 rclone copy
|
15
happyxhw101 168 天前
据我调研所知,之前专门调研过,rsync ,rclone 都不支持单文件增量,只有 syncting 支持 apeend 形式的增量,也就是虽然 diff 只有 6M ,但是需要把整个文件重新同步一次
|
16
happyxhw101 168 天前
|
17
jolly336 OP 感谢各位大佬的解答,目前看来各种工具还是只有 Rsync 能满足增量拉取,只是性能有点问题,在增量拉取单个大文件时 sender 端要挨个数据块计算 checksum ,这期间网络是空闲的,到传输变动字节数据时网速还是可以的,所以耗时就在 rsync 只会单核 CPU 工作,checksum 拉长了耗时。
目前准备切片并行传的试下,但这种会出现资源竞争,整体耗时有时候会劣化。不知道还有啥好思路优化? |