【问题标题】:Simple rails app performance on herokuHeroku 上的简单 Rails 应用程序性能
【发布时间】:2012-07-04 21:22:19
【问题描述】:

我有一个非常简单的 rails 3.2.6 应用程序。我多年来一直使用 Heroku 来托管原型,始终处于免费层。我终于在我的最新应用上添加了一个付费测功机,并添加了 New Relic 来监控性能。

我在极其简单的页面上看到 4500 多毫秒的请求时间,流量几乎为零(我们尚未启动)。 New Relic 表示,99% 的时间都花在了渲染模板上。这是一个 100 行布局内的 75 行 完全静态 haml 模板。应用模板有标准的- if current_user.nil? 分支。

我还没有添加页面缓存。我当然会这样做,但我想在掩盖它之前确定这种性能非常差的根本原因。有小费吗?我应该从 Heroku 获得什么样的响应时间?在我的本地开发环境中,相同的页面响应时间为 26 毫秒(资产在 1.5 秒之前进入)。 New Relic 报告我在 Heroku 上的动态页面的平均响应时间为 2000 毫秒到 6000 毫秒。


编辑:我为静态 / 打开了页面缓存,现在看到的平均值为 173 毫秒。但我仍然担心我在动态页面上的糟糕平均水平。

【问题讨论】:

  • 4500+ms 是一致的还是只是第一次命中?如果有一段时间没有使用,Heroku 会让应用进入睡眠状态(我认为是在一个小时不活动之后)
  • 我认为 dynos 只为免费帐户闲置。还是您指的是应用服务器在未使用时释放内存?在那个特定页面上,平均实际上是(令人惊讶的)173 毫秒。但我仍然对平均 2k 到 6.5k 的其他动态页面感到好奇。 7 个请求的平均时间为 6500 毫秒。 8 有 4000 毫秒。 6个有2000毫秒。记录的最差响应时间是 51,000 毫秒。
  • 是的,我想如果你付钱,它就不会睡觉。你能发布表现最差的页面吗?
  • 可能是heroku上的数据库。您可以在 heroku devcenter.heroku.com/articles/console 上运行控制台。然后做类似 Benchmark.measure { 10000.times { |i| u = User.find_by_id(i); u.user_name if u } } 在您的开发盒和 heroku 上并进行比较。
  • 如果您在 New Relic 中设置可用性监控以访问非静态页面,您的 dynos 将保持活动状态,因为 NR 每隔 30 秒就会访问您一次 =)

标签: ruby-on-rails performance heroku newrelic


【解决方案1】:

正如 cmets 所说,我的猜测是因为在一段时间内第一次点击 Heroku 将不得不启动应用程序(在免费应用程序的情况下)来服务请求,这可以使您的平均请求时间相当慢。

【讨论】:

  • 这是一个有 2 个测功机的付费应用。
猜你喜欢
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 2012-04-06
  • 2012-09-08
  • 2014-08-08
  • 2012-10-12
  • 2012-10-29
  • 2013-04-25
相关资源
最近更新 更多