您的初始 rsync 延迟有几个可能的原因
rsync
在完成任何数据更新之前,对双方进行调查以确定有什么不同。如果您有一些大数据块或大量目录条目,这可能需要一段时间。如果您已--checksum
启用,这尤其是一个问题,它会执行完整的内容校验和以检查差异。
rsync
通常与 SSH 一起使用,这可能会由于 DNS 滞后和超时而出现延迟,因此您可以检查以确保两台主机的 DNS 记录都有正向 (A) 和反向 (PTR) 记录,并且 DNS 在两端都起作用, 或者主机是通过/etc/hosts
或类似方式相互认识的。
确保首先测试 SSH 连接是否存在延迟,假设您使用 SSH 作为(默认)的传输机制,并且目标端rsync
的文件中包含 SSH 密钥。~/.ssh/authorized_keys
如果是这样,您还应该检查该文件,以查看它使用的记录是否涉及具有自身滞后问题的包装脚本 - 如果其他人编写它并且您是对其进行故障排除的人,这可能会令人惊讶。
另一个问题是您是否应该考虑编写一些代码以使延迟无关紧要。即使是一秒钟的实际更新也会影响事情,并且rsync
ed 目录很容易在动态内容中增长,因此以后需要更多的更新时间。在以前的公司中,我们有时不得不维护不同的代码层次结构(比如说两个)并rsync
在不使用的那个上做,然后切换。当然,这可能不适用于您的情况(git
如果有运行仍然开放源文件的脚本语言,类似的问题可能会出现在部署更新中,等等bash
)。
time ...
在本地网络上的一个小目录上进行测试的时间(带)显示:
sent 160 bytes received 13 bytes 115.33 bytes/sec
total size is 3455 speedup is 19.97
real 0m0.499s
user 0m0.008s
sys 0m0.000s
strace
可以让你看看时间都去哪儿了:
strace -tt -f -o /tmp/log rsync -avz ....
在我看来,它在等待目标主机的反馈时似乎有少量延迟,大致如我所料。