5

我们的 Heroku 应用程序的数据库查询时间一直存在问题,我已经使用脚本设置了一个新的测试应用程序,该脚本可以 ping 我们的 MongoLab 数据库服务器和 Google。MongoLab 数据库服务器与 Heroku 应用程序位于同一数据中心。

到 db 服务器的 RTT 大约是 3ms。现在,即使在测试服务器上,我也看到了大量的抖动。您可以在此处查看我的 ping 脚本的输出:http: //damp-citadel-6004.herokuapp.com/test - 延迟经常在 30 毫秒范围内波动,有时甚至在 100 毫秒范围内。

我只是想知道这是否是 Heroku 的正常行为?如果是这样,Heroku 将不再是一个可行的选择,因为我们需要 MongoLab 连接的低延迟。由于添加到查询中的时间,当前的延迟量正在扼杀我们的应用程序。

Heroku 堆栈是 Cedar,它位于 US-EAST,MongoLab 数据库也是如此。

任何帮助,将不胜感激。

4

1 回答 1

0

我很好奇你是怎么知道你的 heroku dynos 和 mongolab 的实例在同一个数据中心的?通过ip不知何故?你真的能确定吗?这两项服务都使用 us-east-1 AWS 区域中的多个可用区,据我所知,不会让您指定偏好或报告资源所在的位置。同一个应用程序的 2 个 heroku dynos 可能,从它的声音来看,它可能确实存在于不同的 AWS AZs 中。不同的可用区驻留在不同的数据中心当然是真的,而且我甚至相信一些可用区跨越多个数据中心。

无论如何,你不是唯一一个。最近,我从 heroku 和我自己的 ec2 实例到同一亚马逊地区的 mongolab 和 mongohq 也经常遇到连接问题。Mongohq 支持回应说,他们在 us-east-1 的不同 AZ 中的 EC2 实例之间也存在连接问题,并暗示 AWS 支持最近承认了一些网络级别/安全组扩展问题。我能够找到这篇文章: http: //orensol.com/2009/05/24/network-latency-inside-and-across-amazon-ec2-availability-zones/这表明您正在观察的延迟是异常高。

也许与此相关的是,我也遇到了 EC2 中的 DNS 解析器(包括 heroku)到 mongolab 和 mongohq 的问题。即使对于权威服务器都属于亚马逊的路由 53 区域。总而言之,us-east-1 中的可用区之间的连接似乎不是 100%,所以虽然我鼓励您尝试其他基于 EC2 的数据库服务,但您可能看不到任何差异。

于 2013-07-20T03:14:03.087 回答