1

我遇到了一个我无法深入了解的不寻常情况。我们有一个在里面4.1运行的 rails 应用程序。API 端点之一检索对象列表。jRuby 1.7.12Torquebox 3.1.0

目前数据库中只有不到 7000 条记录。当发出 API 请求时,会使用ActiveModel::Serializersgem 以 JSON 格式查询和呈现这些记录。这一切都按我们的预期工作,并且在 Rails 控制台中执行此操作,效果很好。

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

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

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

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

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

4

1 回答 1

0

好吧,事实证明它一直是bullet宝石。看起来这么多记录,检测是否有N+1个查询是相当耗时的。简单地禁用项目符号可以将时间缩短到 Rails 控制台所说的确切时间。

于 2014-05-09T15:19:31.047 回答