2

我正在 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

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

4

2 回答 2

2

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

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

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

于 2013-04-16T14:36:29.570 回答
0

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

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

有关设置的详细信息,请点击此处

于 2013-04-16T13:06:34.610 回答