在EC2和RDS实例之间的Amazon Web Services中,网络延迟的影响有多大,特别是对于Magento?

The*_*Lee 7 amazon-ec2 magento amazon-rds amazon-elastic-beanstalk

请记住,我对这些东西的经验很少.

我一直在尝试在Elastic Beanstalk中建立一个多服务器Magento站点,使用RDS作为数据库,使用EC2作为单独的管理员和前端服务器.我正在测试tools.pingdom.com上的几个不同设置的速度,主要是看他们称之为"等待"(DNS,连接,发送,等待,接收),假设这是一个粗略的度量,它需要多长时间Magento为页面生成html.我对在不同的设置上如何使用类似的服务器实例创建大致相同的页面时的等待时间变化非常困惑.我的价值在980到1.8之间.

我以为我开始注意到一种模式.似乎EC2与RDS实例处于相同可用区域的设置将更快且更一致地更快.所以我更改了弹性beanstalk配置,以便EC2与数据库位于同一区域.我不科学的发现是,在这次改变之后,我会一直等待大约1秒.在我看来,速度的相当显着的差异是由于应用服务器和数据库之间的网络延迟.

我的问题有三个部分.首先,这是人们对将实例保持在相同区域的期望,还是我在一小组测试结果中读得太多?其次,这是一个重要的现实世界速度差异?因为它似乎对我而言,似乎只会通过使用像NFS这样的东西共享媒体文件夹而变得更糟.第三,允许应用服务器在不同区域启动是否有任何优势,那些等待时间增加的优势是否值得?

另外,如果我做错了,请告诉我.

dat*_*age 8

区域之间的延迟应该在单毫秒范围内.虽然这可能是某些情况下的问题,但在大多数情况下,您可以通过充分利用缓存来弥补它.

使用多个区域的主要好处是可用性.系统的设计使得每个区域之间的共享非常少.如果某个区域导致单个区域失败,则不应该级联到其他区域.

虽然这主要起作用,但有些情况(尤其是EBS卷)显示出这种隔离的局限性.

  • 凉.我尝试在相同和不同区域的EC2实例之间进行ping操作.在us-east-1d的ec2s之间,我的时间约为0.5毫秒.在我们东1d和1c之间,我大约需要2毫秒.这对我来说似乎是一个非常小的差异,但在您看来,1.5毫秒的差异是否会增加(有足够的数据库查询)到我在测试网站上看到的200毫秒-800毫秒的差异?它是如何工作的? (2认同)
  • ping很擅长检测延迟,但延迟的关键时间取决于您使用网络连接的方式.发送大量短的"快速"SQL请求,这些请求在代码中按顺序执行,延迟时间非常糟糕.如果您可以将SQL请求组织为更大但更少的请求,并在代码中并行运行这些请求,那么延迟将产生更小的影响. (2认同)