我在我的Rails应用程序中使用独角兽(Unicorn)作为我的应用程序服务器,并试图弄清楚为什么有时候会出现一个不太寻常的(> 5秒)延迟,从请求开始到达我的控制器的时间。
这是我的production.log输出的内容:
Started GET "/search/articles.json?q=mashable.com" for 138.7.7.33 at 2015-07-23 14:59:19 -0400**
Parameters: {"q"=>"mashable.com"}
Searching articles for keyword: mashable.com, format: json, Time: 2015-07-23 14:59:26 -0400
注意在“STARTED GET:”和“正在搜索关键字的文章”之间有7秒的延迟,这是控制器方法执行的第一件事情。
articles.json被路由到我的控制器方法“articles”,目前它只做了这个:
def articles
format = params[:format]
keyword = params["q"]
Rails.logger.info "Searching articles for keyword: #{keyword}, format: #{format}, Time: #{Time.now.to_s}"
end
这是我的routes.rb文件
MyApp::Application.routes.draw do
match '/search/articles' => 'search#articles'
#more routes here, but articles is the first route
end
可能是什么原因导致这种延迟呢?是因为独角兽工作进程忙碌吗?还是因为独角兽工作进程占用了过多的内存,导致系统变慢?
注意:我不认为这种延迟是由于进行任何数据库连接引起的,但我可能是错误的。 代码不需要进行数据库调用,我的数据库最大连接数为1000,通常最多只有1-2个连接。
Completed 200 OK in 100ms (Views: 50.0ms | ActiveRecord: 50.0ms)
这一行的含义是什么? - amiuhle