0

我有一个 Rails 应用程序在 postgreSQL 的机架空间上运行。

它真的很慢。

对于特殊请求,它最多需要 4 秒来响应

我已经安装了新的遗物。

我可以看到,例如某些控制器的索引操作是最慢的。他们真的很简单,有一些发现。

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

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

我知道子弹,它有助于找到对数据库的 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 个。这可能是由于访问这些视图的计算机上的互联网连接速度慢造成的吗?

4

2 回答 2

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

于 2012-11-10T00:58:16.073 回答
1

问题在于资产管道

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

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

于 2012-11-16T09:31:51.993 回答