【发布时间】:2017-08-02 18:15:57
【问题描述】:
最近我们的 Rais 4.2.7.1 应用程序每晚都遇到问题,我们开始看到一堆非常慢的 ActiveRecord::QueryCache#call 呼叫,即使我们在半夜的流量相对较低:
我们使用 Puma 在 Heroku 上运行,该应用程序的工作量很大,为此我们使用 Sidekiq。白天它运行良好,但每天晚上我们都会通过似乎源自 ActiveRecord::QueryCache#call 的 API 获得响应时间极慢的峰值。
我可以从我们的应用程序中找到可能导致此问题的唯一原因是我们启用了 heroku pg:backups,并且在上图的当晚,备份在 3:06 开始运行,这是您第一次看到的确切时间ActiveRecord::QueryCache#call newrelic 图中的峰值。然而,备份在一小时后完成(大约在最大峰值附近),但正如您所见,峰值一直持续到凌晨 5 点左右。
这可能是由 pg:backups 引起的吗? (我们的数据库大约 19GB),或者它可能完全是别的东西?有没有避免这种缓存调用或加快它的好方法?我不完全理解为什么它会这么慢或根本不存在于交易列表中。有什么建议吗?
【问题讨论】:
标签: ruby-on-rails ruby postgresql heroku activerecord