
使用 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 PRO 加上 -W 参数,减少校验试试 |
2 jolly336 OP @ferock -W, --whole-file copy files whole (without rsync algorithm) 就真成了 scp 了,会 disable 增量传输,文件太大了,是不行的 |
3 dann73580 2024-07-10 00:31:33 +08:00 via Android 换 rclone 才是真解,可以多线程,大文件还能配置分块上传。 |
4 yingxiangyu 2024-07-10 01:05:12 +08:00 换 http ,起了端口直接 wget |
5 adrianzhang 2024-07-10 06:20:26 +08:00 瓶颈是啥? IO 还是 CPU ?确定后针对性解决呗。 |
6 T0m008 2024-07-10 07:05:39 +08:00 单个文件还要增量传输?不是多此一举吗?要么-W 要么直接 scp, 别折腾了 |
7 june4 2024-07-10 08:43:06 +08:00 起个 http 文件服务不就是可以断点继传了,wget 和 aria 之类的都可以断线自动重连继传。 |
9 jolly336 OP @dann73580 server 是部署的 K8S 这套,也能用吗?这个支持增量传吗?还有在本地 Mac 网速有限的情况下,能最快拉回文件 |
10 jolly336 OP @adrianzhang 测试了下,Mac 网速不好时 40Mb/s ,瓶颈在网速 IO 这,网速比较高 1000Mb/s 时,瓶颈在服务器磁盘 IO 上 |
11 jolly336 OP @yingxiangyu 这个很原始,没法做到增量 diff 拉取呐 |
12 adrianzhang 2024-07-10 12:20:39 +08:00 @jolly336 网速瓶颈的解决,可以依靠 tcp over udp 或 quic 。磁盘 io 解决是把文件直接就放 ram 盘里。 |
14 Aurorataro 2024-07-10 13:02:50 +08:00 @jolly336 #9 你的需求适合 rclone copy |
15 happyxhw101 2024-07-10 13:47:41 +08:00 据我调研所知,之前专门调研过,rsync ,rclone 都不支持单文件增量,只有 syncting 支持 apeend 形式的增量,也就是虽然 diff 只有 6M ,但是需要把整个文件重新同步一次 |
16 happyxhw101 2024-07-10 13:49:10 +08:00 |
17 jolly336 OP 感谢各位大佬的解答,目前看来各种工具还是只有 Rsync 能满足增量拉取,只是性能有点问题,在增量拉取单个大文件时 sender 端要挨个数据块计算 checksum ,这期间网络是空闲的,到传输变动字节数据时网速还是可以的,所以耗时就在 rsync 只会单核 CPU 工作,checksum 拉长了耗时。 目前准备切片并行传的试下,但这种会出现资源竞争,整体耗时有时候会劣化。不知道还有啥好思路优化? |