出于某种原因,在运行单个 rsync 命令时,即使我将 2 个服务器都连接到 1 Gbps 端口时,我的速度也会达到 1 MB/秒到 2 MB/秒。
rsync -v --progress -e ssh /backup/mysqldata/mysql-bin.000199 root@XXX.XXX.XXX.XXX:/secondary/mysqldata/mysqldata/mysql-bin.000199
我有超过 800 GB 的数据要在 500 个左右的文件中传输拆分,所有文件都以以下开头:
mysql-bin.000*
我发现从单独的 SSH 窗口同时运行 25-30 rsync 可以让我获得超过 25 MB/秒的速度,但是我需要花费几个小时来手动运行这些。
有没有办法从单个 rsync 命令中获得 25 MB/秒?
OpenSSH 因窗口大小限制而臭名昭著,这对于高延迟连接来说不太友好。要确定所需吞吐量的最小窗口大小(现在让我们忽略其他开销):
Window size = throughput * latency
Run Code Online (Sandbox Code Playgroud)
因此,如果您想要 25MB/秒(200,000,000 位/秒)的延迟时间超过 25 毫秒(0.025 秒):
Window size = 200,000,000 * 0.025 = 5000000.0 bits
Run Code Online (Sandbox Code Playgroud)
除以 8,大约是 625KB 的窗口。让我们翻转过来,看看延迟时的 64KB 窗口(OpenSSH 许多版本的内部上限):
throughput = 512000 bits / 0.025s latency = 20480000.0 bits/sec = ~2.5MB/sec
Run Code Online (Sandbox Code Playgroud)
这与您所看到的非常接近(您可能还有其他一些开销。)
所以,我会按以下顺序检查:
| 归档时间: |
|
| 查看次数: |
3641 次 |
| 最近记录: |