Rails 3.2.1应用程序在生产中运行缓慢

时间:2012-11-09 23:31:36

标签: ruby-on-rails ruby ruby-on-rails-3 performance

我在postgreSQL上的rackspace上运行了一个Rails应用程序。

真的很慢。

在特殊要求下,它最多使用4秒钟来回复

我已经安装了新的遗物。

我可以看到,例如某些控制器的索引动作是最慢的。有一些发现,它们非常简单。

所以,我真的不明白是什么减慢了它。

我想知道你们是否都能提到一些能找到性能问题的宝石?

我知道bullet,这有助于找到数据库的n + 1个查询,但这不是我的问题。

按要求我添加项目控制器的索引操作(平均响应时间为4000毫秒)

def index
    @firm = current_firm
    @projects = current_user.projects.is_active
    @customers = @firm.customers
    @project = Project.new
    @todo = Todo.new
end

is_active方法是模型中的范围

scope :is_active, where(["active = ?", true])

从应用程序控制器我有一些帮助器和before_filters。其中一个可能是问题(或其他)这就是为什么我想要一些工具来追踪性能问题。

更新  看看production.log我看到了

Rendered logs/_list_header.html.erb (0.3ms)
Rendered logs/_log.html.erb (127.7ms)
Rendered private/log_range.js.erb (721.2ms)
Completed 200 OK in 836ms (Views: 733.2ms | ActiveRecord: 43.9ms)

Processing by ProjectsController#index as HTML
Rendered projects/_index.html.erb (4149.8ms)
Rendered projects/index.html.erb within layouts/application (4157.0ms)
Rendered layouts/_header.html.erb (0.3ms)
Completed 200 OK in 6682ms (Views: 4199.6ms | ActiveRecord: 457.0ms)

Processing by LogsController#stop_tracking as JS
Parameters: xxxxx
Rendered logs/_tracking_partial.html.erb (121.1ms)
Rendered logs/_start_tracking.html.erb (6877.9ms)
Rendered logs/_log.html.erb (43.0ms)
Rendered logs/stop_tracking.js.erb (7224.0ms)
Completed 200 OK in 9968ms (Views: 7617.2ms | ActiveRecord: 455.3ms)

看看最后一个。渲染视图和js花了很多时间。是什么导致这种情况。视图中没有找到。我只是使用控制器的实例变量。并且数据库中的条目少于20个。这可能是由访问这些视图的计算机上的慢速互联网连接引起的吗?

2 个答案:

答案 0 :(得分:2)

你的Postgresql数据库服务可能是垃圾,或者它远离你的应用服务器?

无论如何,你应该创建索引! 怎么样?在您的迁移中

add_index :costumers, :firm_id

您还可以添加包含多个列的索引,例如

add_index :projects, [:user_id, :alive]

以下是add_index

的所有选项
  

add_index(table_name,column_names,options):添加新索引   列的名称。其他选项包括:name,:unique(例如{   :name => “users_name_index”,:unique => true})和:order(例如{   :order => {:name => :desc}})。

另外请记住,我不是说你应该创建这些索引,它们只是示例。您必须从查询中看到where子句中的内容

我没有找到关于文档索引的任何好信息,但这里似乎是一篇很好的文章http://tomafro.net/2009/08/using-indexes-in-rails-index-your-associations

答案 1 :(得分:1)

问题在于资产管道

我有一些未预编译的css和js文件。我没有收到任何错误消息,但您必须准确命名。没有“。”在文件名中没有“.css”

索引没有帮助。但是,当数据库中有更多条目时,它可能会提高性能。