亚马逊网络服务中 EC2 和 RDS 实例之间的网络延迟对于 Magento 来说有多大影响?

7
请注意,我对这些东西几乎没有经验。
我一直在尝试在Elastic Beanstalk中设置一个多服务器的Magento站点,使用RDS作为数据库,EC2作为单独的管理和前端服务器。我正在tools.pingdom.com上测试几种不同的设置速度,主要关注他们称之为“等待”(DNS,连接,发送,等待,接收),假设这是Magento生成页面HTML所需时间的粗略测量。我感到困惑的是,在不同的设置中,即使使用类似的服务器实例创建大致相同的页面,等待时间也会有如此大的差异。我得到的值介于980毫秒和1.8秒之间。
我认为我开始注意到了一个模式。看起来EC2与RDS实例在同一可用区的设置将更快且更一致地更快。因此,我更改了弹性Beanstalk配置,以便EC2与数据库位于同一区域。我的非科学发现是,在此更改后,我将始终获得大约1秒的等待时间。我认为速度上相当显着的差异似乎是由应用程序服务器和数据库之间的网络延迟造成的。
我的问题分为三个部分。首先,将实例保留在同一区域,这是否符合预期,还是我从小型测试结果中读取太多?其次,这是速度上的显着现实差异吗?因为对我来说似乎是,而且似乎只会通过使用像NFS之类的东西共享媒体文件夹而变得更糟。第三,允许在不同区域启动应用程序服务器是否有任何优势,这些优势是否值得增加等待时间?
另外,如果我做错了什么,请告诉我。
1个回答

8
不同区域之间的延迟应该在单毫秒范围内。虽然在某些情况下可能会有问题,但在大多数情况下,您可以通过充分利用缓存来弥补它。
使用多个区域的主要优点是可用性。系统设计得很好,每个区域之间的共享极少。如果某些事情导致单个区域失败,不应该对其他区域造成连锁反应。
尽管这通常有效,但已经出现了一些案例(特别是使用EBS卷),显示出这种隔离的局限性。

2
很好。我尝试在同一区域和不同区域的EC2实例之间进行ping测试。在us-east-1d区域内的ec2之间,延迟约为0.5毫秒。在us-east-1d和1c之间,延迟约为2毫秒。对我来说,这似乎是一个非常小的差异,但在您看来,如果有足够的数据库查询,这1.5毫秒的差异是否会累加到我在测试站点上看到的200毫秒至800毫秒的差异?就是这样的吗? - The Phil Lee
2
Ping在检测延迟方面很好,但延迟对你有多重要取决于你如何使用网络连接。如果发送许多短暂的“快速”SQL请求,并在代码中按顺序执行,则延迟会带来非常严重的影响。如果您可以将SQL请求组织成更大但更少的请求,并在代码中并行运行这些请求,则延迟将具有较小的影响。 - Michael Shaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接