Rails在15秒内完成,2分钟后收到响应

时间:2014-05-08 15:52:17

标签: ruby-on-rails-4 jruby torquebox

我遇到了一个我无法触及底部的异常情况。 我们在4.1内的jRuby 1.7.12上运行了一个rails Torquebox 3.1.0应用程序。其中一个API端点检索对象列表。

目前,数据库中的记录不到7000条。当发出API请求时,会使用ActiveModel::Serializers gem在JSON中查询和呈现这些记录。这一切都按照我们的预期运行,并且在rails控制台中执行此操作,它完美运行。

问题在于提出实际的API请求。它似乎按预期工作,并查看rails日志,有输出

Completed 200 OK in 6354ms (Views: 5479.0ms | ActiveRecord: 867.0ms)

此时,我希望看到从服务器返回的数据,但实际上看到服务器的响应需要2.7分钟。我已尝试从ChromeSafari甚至curl发出请求,只是为了确保它不是一个奇怪的浏览器问题,但没有运气。< / p>

我已按照here所述在序列化服务器中实施了一些缓存。我很确定这不是问题,但是因为它在控制台中按预期工作,所以我真的很困惑。

还有什么可能导致2分钟的延迟。在这段时间里,我看到了Java的100%CPU使用率,所以肯定会发生一些事情。

1 个答案:

答案 0 :(得分:0)

事实证明,bullet宝石一直在占用。似乎有很多记录,检测是否存在N + 1查询是非常耗时的。简单地禁用项目符号就可以缩短轨道控制台所说的时间。