首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加快小文件(500kb)跨两个实例的同步

加快小文件(500kb)跨两个实例的同步
EN

Stack Overflow用户
提问于 2013-06-28 04:59:38
回答 1查看 1.2K关注 0票数 2

我有两个ec2实例,webserverproduction。我需要production复制小文件(2-5kb)到和从webserver,而网络服务器可以没有访问生产。我使用的是ubuntu 12.04。目前,我在ssh上使用rsync得到了4-5秒的延迟。有没有更快的方法来做这件事?我可以忍受1秒的延迟。

我正在考虑在vpc中启动实例,并进行联网过程,但我不确定这是否足够快-关于这方面的教程也很少。或者,我已经开始阅读nfs,但我仍然不确定它是否能做到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-05 14:00:44

初始rsync延迟可能有几个原因

在完成任何数据更新之前,

  • rsync会对两端进行调查,以确定不同之处。如果您有一些大型数据块或大量目录条目,这可能需要一段时间。这是一个特别的问题,如果您启用了DNS,它执行完整的内容校验和来检查differences.
  • rsync通常与--checksum一起使用,这可能会由于DNS延迟和超时而出现延迟,因此您可能会进行检查,以确保两台主机的DNS记录都有正向(A)和反向(PTR)记录,并且DNS在两端都起作用,或者通过/etc/hosts等相互识别主机。

假设您使用SSH作为rsync的传输机制(缺省设置),并且SSH密钥位于目标端的~/.ssh/authorized_keys文件中,请确保首先测试SSH连接性是否为lag。如果是这样的话,你也应该检查这个文件,看看它正在使用的记录是否包含有自己的滞后问题的包装器脚本-如果是其他人写的,而你是解决它的问题的人,这可能会令人惊讶。

另一个问题是,您是否应该考虑编写一些代码来使延迟变得无关紧要。即使只有一秒钟的时间进行实际的更新,也可能会影响到事情,而且rsynced目录很容易在动态内容中增长,因此需要更多的更新时间。在以前的公司,我们偶尔不得不维护不同的代码层次结构(比方说两个),并在不使用的代码上执行rsync,然后切换。当然,这可能不适用于您的情况(如果有脚本语言运行在仍然开放的源代码文件上,就会出现类似的问题,就像bash那样)。

在本地网络上的一个小目录上进行测试的计时(使用time ...)显示:

代码语言:javascript
复制
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可以让你看到时间的去向:

代码语言:javascript
复制
strace -tt -f -o /tmp/log  rsync -avz  ....

在我的系统上,它主要看起来像是等待目标主机反馈的少量延迟,大致与我预期的一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17353077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档