【问题标题】:High response queue times on Heroku with Rails RefineryCMS使用 Rails RefineryCMS 在 Heroku 上的高响应队列时间
【发布时间】:2013-04-16 11:17:34
【问题描述】:

我正在 Heroku 上运行 RefineryCMS 应用程序。它在两个网络测功机上,但对于当前每分钟 13 个请求的可忽略流量,实际测功机负载低于 10%(如果我正确阅读 New Relic)。

但是,我的应用服务器平均响应时间在 800 毫秒,几乎所有时间都花在了请求排队上。每个其他请求都会遭受 3000 毫秒(或更多)的请求队列峰值,而其他一些请求将在 200-300 毫秒内正常加载,这要归功于积极的内存缓存。

如何找出问题的根本原因是什么?

编辑:在进一步调查日志后,我不得不问自己一个问题:这是预期的 RefineryCMS 在 Amazon S3 上的资产托管行为吗?

heroku[router]: method=GET path=/system/images/W1siZiIsIjIwMTMvMDQvMTQvMTUvMTAvMDkvNzY4L0pFQU5fQ0xBVURFX1BFTk5FVElFUi5qcGciXSxbInAiLCJ0aHVtYiIsIjI1MHgiXV0/JEAN-CLAUDE%20PENNETIER.jpg service=1061ms status=200 bytes=11232
heroku[router]: method=GET path=/system/images/W1siZiIsIjIwMTMvMDQvMTQvMTUvMTEvMzkvMjI3L01BUklTU19KQU5TT05TLmpwZyJdLFsicCIsInRodW1iIiwiMjUweCJdXQ/MARISS%20JANSONS.jpg service=1161ms status=200 bytes=14358
heroku[router]: method=GET path=/system/images/W1siZiIsIjIwMTMvMDQvMTQvMTUvMjEvNDAvOC9TaXJfTkVWSUxMRV9NQVJSSU5FUi5qcGciXSxbInAiLCJ0aHVtYiIsIjI1MHgiXV0/Sir%20NEVILLE%20MARRINER.jpg service=5412ms status=200 bytes=23191

这些文件是否在本地托管,因此会影响请求?

【问题讨论】:

    标签: ruby-on-rails heroku refinerycms newrelic


    【解决方案1】:

    这听起来像是运行缓慢的请求。查看您的日志以获取更多信息,但我怀疑您会看到一堆 H12 错误。

    如果您还没有,我会考虑使用 Unicorn 和 Rack::Timeout。通常,快速请求会因其他长时间运行的请求引起的队列而减慢。通过查看使用 Rack::Timeout,您可以终止任何长时间运行(例如 15 秒)的请求,而使用 Unicorn 将允许您一次处理多个请求。

    当然,这是假设您在 Cedar 上运行。如果你不是,我会尽快升级。

    【讨论】:

    • 我正在运行 Cedar,我正在为 Unicorn 提供两个实例。 Rack::Timeout 也设置为奇数 29 秒,因为我知道它比 Unicorn 30 秒超时更好。无论如何,我都会看一下日志,看看我是否能找到任何启​​发性的东西,但据我所知,这些是 Rails 服务器日志,这似乎是一个 dyno 级别的问题。
    【解决方案2】:

    您是否尝试过切换到使用独角兽网络服务器?

    它允许您从一个测功机同时处理多个请求。

    Details on setup here.

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 2015-09-14
      • 2015-05-19
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 2015-04-23
      相关资源
      最近更新 更多