我在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个。这可能是由访问这些视图的计算机上的慢速互联网连接引起的吗?
答案 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”
索引没有帮助。但是,当数据库中有更多条目时,它可能会提高性能。