Rails应用程序具有以下特性:
的一些模型从外部MySQL数据库访问数据。下面的代码用于将外部数据库设置为模型:
class Foo < ActiveRecord::Base
establish_connection ENV['EXTERNAL_DATABASE_URL']
self.table_name = 'foos'
...
end在我的笔记本上本地运行该应用程序,我有以下请求执行时间:
Completed 200 OK in 374ms (Views: 118.1ms | ActiveRecord: 198.6ms)当我将其上传到Heroku并在那里使用该应用程序时,同一个请求的执行时间如下
Completed 200 OK in 8000ms (Views: 901.6ms | ActiveRecord: 6609.2ms)当我在Heroku上运行它时,ActiveRecord和视图时间都非常大。
编辑

NewRelic显示,瓶颈是数据库。但是,这显然不是DB在查询上花费的时间,因为当我在本地运行时,它不会花费那么多时间。所以我必须假设是延迟造成的?
发布于 2014-05-23 15:10:44
数据库请求所需的时间取决于以下几个因素:
当您的web服务器由美国的Heroku (美国东部-1)托管,但是您的数据库位于圣保罗的Amazon上时,那么每个对数据库的请求都会给网页的总体响应时间增加150 US的延迟。在一个web请求中,对数据库的请求越多,这个问题就越大。
我建议将数据库尽可能地移动到web服务器。如果可能的话,在美国的同一数据中心内(在同一台服务器上最快)。或者考虑在圣保罗自己托管with服务器(也许是使用亚马逊OpsWorks)。
https://stackoverflow.com/questions/23830936
复制相似问题