我已经搜索了好几天,但找不到这个问题的任何相关答案。
在我托管在 Heroku 上的 Rails 4.1 应用程序中,当负载增加时,一些 PUT 请求变得非常慢。今天最慢的是53秒。所有这些都没有数据库(MongoDB)注册任何慢查询。通常这个请求需要 0.3ms 非常快。无论有效负载是什么,请求都很慢。
安装 New Relic 后,它对情况有了更多了解,但我仍然不知道在哪里解决这个问题。
控制器中的代码很快,但根据 New Relic,慢的是 ActionDispatch::Routing::RouteSet#call
这是New Relic报告的转储:
Slowest components Count Duration %
ActionDispatch::Routing::RouteSet#call 1 53,000 ms 100%
Plugin::FetchablesController#update 1 38 ms 0%
Rails::Rack::Logger#call 1 1 ms 0%
ActionDispatch::Cookies#call 1 1 ms 0%
ActiveSupport::Cache::Strategy::LocalCache::Middleware#call 1 0 ms 0%
Rack::Runtime#call 1 0 ms 0%
Total 53,000 ms 100%
其他一些可能有帮助或可能与此有关的信息。我有路线的别名,但我不明白为什么这很重要。
namespace :plugin do
resources :fetchables, path: :minables
end
任何关于可能发生的事情以及我可以做些什么来解决它的想法将不胜感激。
更新 所以这似乎与内存有关。当我们升级到 Performance Dynos 时,我们不再看到这些错误。但这似乎是 Heroku 严重错误配置的东西。