我只是在亚马逊的AWS上设置了一个db.t2.micro实例。我正在使用sinatra加载localhost网页。我正在使用Active Record来执行大约30次查询,并且需要92秒才能加载。这非常慢。我尝试执行此处列出的自定义参数:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_BestPractices.html#CHAP_BestPractices.PostgreSQL
这无助于加快速度。我不确定如何加速这个实例。这是我第一次托管数据库。任何帮助,将不胜感激。
当我运行我的sinatra应用程序时,它在本地托管(localhost)。这里是30~查询加载92秒的地方。当我在Postgres中运行select *语句时,它们只需要几秒钟。
答案 0 :(得分:3)
问题在于您与亚马逊数据中心之间的延迟。
例如,当您在纽约并且您的RDS实例位于亚马逊西海岸数据中心时,您与数据中心之间的延迟大约为80-100毫秒。这意味着当您的本地应用程序向数据库发送查询时,在数据库收到查询之前大约需要100毫秒。要返回答案,需要再花100ms。这就是说:假设一个往返需要300毫秒,你有~30个查询然后你的应用程序失去大约10秒什么也不做 - 只是等待数据通过网络发送。还有其他一些因素可能会使这一点变得更慢:大包或丢包(服务器必须再次询问),糟糕的互联网连接,无线连接,你和数据库之间的距离比我的例子长。
因此,数据库应尽可能靠近同一数据中心的应用程序服务器,以最大限度地减少延迟。