Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking 通过两个实例加快小文件(500kb)的rsyncing_Networking_Ssh_Amazon Web Services_Nfs_Vpc - Fatal编程技术网

Networking 通过两个实例加快小文件(500kb)的rsyncing

Networking 通过两个实例加快小文件(500kb)的rsyncing,networking,ssh,amazon-web-services,nfs,vpc,Networking,Ssh,Amazon Web Services,Nfs,Vpc,我有两个ec2实例,webserver和production。我需要production将小文件(2-5kb)复制到webserver,而webserver无法访问production。我正在使用ubuntu 12.04。目前,我使用rsync over ssh获得了4-5秒的延迟。有没有更快的方法?我可以忍受一秒钟的延迟 我正在考虑在vpc中启动实例,并完成一个联网过程,但我不确定这是否足够快——关于这方面的教程也很少。或者,我已经开始阅读有关nfs的文章,但我仍然不确定它是否会起作用。您最初

我有两个ec2实例,
webserver
production
。我需要
production
将小文件(2-5kb)复制到
webserver
,而webserver无法访问production。我正在使用ubuntu 12.04。目前,我使用rsync over ssh获得了4-5秒的延迟。有没有更快的方法?我可以忍受一秒钟的延迟


我正在考虑在vpc中启动实例,并完成一个联网过程,但我不确定这是否足够快——关于这方面的教程也很少。或者,我已经开始阅读有关nfs的文章,但我仍然不确定它是否会起作用。

您最初的rsync延迟可能有几个原因

  • rsync
    在进行任何数据更新之前,对两侧进行调查,以确定不同之处。如果您有一些大数据块或大量目录条目,这可能需要一些时间。如果启用了
    --checksum
    ,则这尤其是一个问题,它执行完整内容的校验和以检查差异
  • rsync
    通常与SSH一起使用,SSH可能会由于DNS延迟和超时而出现延迟,因此您可以检查以确保两台主机的DNS记录都有正向(A)和反向(PTR)记录,并且DNS在两端都有功能,或者主机通过
    /etc/hosts
    或类似方式彼此都知道
假设您使用SSH作为
rsync
(默认设置)的传输机制,并在目标端的
~/.SSH/authorized_keys
文件中使用SSH密钥,请确保首先测试SSH连接的lag。如果是这样,您还应该检查该文件,看看它使用的记录是否包含有自己的延迟问题的包装器脚本——如果是其他人编写的,而您是对其进行故障排除的人,这可能会让人感到惊讶

一个单独的问题是你是否应该考虑编写一些代码以使延迟无关。即使是进行实际更新的一秒钟,也可能会造成损害,而且

rsync
ed目录很容易在动态内容中增长,因此以后需要更多的更新时间。在以前的公司中,我们偶尔不得不维护不同的代码层次结构(比如说两个),在未使用的代码层次结构上执行
rsync
,然后切换。当然,这可能不适用于您的情况(如果有脚本语言使用仍然开放的源代码文件,例如
bash
倾向于使用,那么类似的问题可能会出现在
git
部署更新等中)

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

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  ....

在我的电脑上,它看起来像是等待目标主机反馈的少量延迟,大致如我所料。

太棒了。关于我需要考虑的问题的细节。我能够使用术语来找到这一点,我可以设置私人和公共机器,并在它们之间发送文件!也不需要NAT。我将尝试在联网机器上安装redis服务器/客户端。它每次都能工作,而rsync不是每次都能工作。嗯。。我从未见过rsync失败,除非磁盘耗尽或网络故障。你的rsync命令看起来像什么?一位在网络工作的朋友建议rsync不会很健壮。嗯,为此启动redis服务器可能有些过分。像大多数工具一样,rsync可能比其他工具更适合某些任务。虽然它的幂等因子很强。如果没有关于你的情况的更详细的信息和你试图解决它的命令,你将很难帮助你。