我有一个 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 个。这可能是由于访问这些视图的计算机上的互联网连接速度慢造成的吗?