sidekiq在此期间获得更多记忆?我们怎么解决这个问题?

时间:2014-03-19 15:17:45

标签: ruby-on-rails ruby sidekiq

sidekiq运行时间非常长,我们的16GB RAM接近满。如果我们停止&重启内存下降。

我们的Rails App版本是Rails 3.2.12和Ruby 1.9.3

我们如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

在我部署Sidekiq之后不久,这发生在我身上。事实证明,我有一份正在运行以下事件的工作:

  • 它会加载导入用户所需的电子表格
  • 在导入过程中犯了错误
  • Sidekiq工作人员已经多次重试这项工作
  • 每次重试都会失败......但是没有大的I / O操作来读取电子表格,将数据从上传的电子表格存储在内存中等等。
  • 我的Sidekiq进程在一个小时左右的时间内运行了1-2 GB的内存

为解决这个问题,我做了以下工作:

  • 安装Sidekiq Failures以通过Sidekiq网络界面中的标签查看失败
  • 揭开问题的根源并修复它
  • 将重试时间缩短为1(从5或6开始......这在申请规则等方面对我有用,但可能对此问题影响不大)
  • 添加了更好的异常处理以捕获并报告这些错误

自从修复了工作中的问题/错误以来,我的Sidekiq流程已经运行了102个不间断的日子,处理了近25,000个工作(不是很多,我知道)并且从未超过700 MB(99%的时间,它位于678 MB)。