【问题标题】:R14 Memory quota exceeded on Heroku for background job running with Sidekiq使用 Sidekiq 运行的后台作业在 Heroku 上超出 R14 内存配额
【发布时间】:2014-04-25 05:08:55
【问题描述】:

我们正在运行利用neography 进行批处理操作的sidekiq worker。

我们的批处理数组在刷新之前最多可容纳 400 次操作(我们也尝试过较小的数字)。

我们在 heroku 上遇到了 R14 内存错误,事情几乎停止了,所以我们怀疑某种内存泄漏(我已经检查过膨胀)。但是,我们一直无法弄清楚它在哪里或如何防止它。

我们尝试将所有调试内存 gem 用作 ruby​​-prof,[...] 没有任何结果或线索,通过 ObjectSpace 读取对象计数,甚至尝试逐行调试并在没有后台作业,但只是通过rails c 和以下命令来监控内存使用情况top -pid `ps auw | grep -i 'rails c' | head -n 1 | awk '{print $2}'` -stats RSIZE

我尝试将我们的 ruby​​ 版本更新到最新 (2.1.0) 但没有任何更改。

欢迎任何想法帮助我们让我们的工人更快乐!

【问题讨论】:

标签: ruby heroku neo4j sidekiq neography


【解决方案1】:

Neo4j 内部使用了大量缓存,这可能会消耗大量内存。你可以尝试通过设置cache_type=none来关闭Neo4j的对象缓存,见http://docs.neo4j.org/chunked/stable/configuration-caches.html

【讨论】:

  • 我相信这是在讨论 heroku / ruby​​ on rails 而不是 neo4j / java 中的内存问题。
  • 没错。这是一个内存泄漏工作者端(使用 Ruby on Rails 运行),没有 neo4j 端。
猜你喜欢
  • 2013-10-01
  • 2012-11-02
  • 1970-01-01
  • 2017-11-02
  • 2017-11-29
  • 2014-07-14
  • 2013-08-17
  • 2014-10-15
  • 2017-04-16
相关资源
最近更新 更多