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

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

我们的Rails应用程序版本是Rails 3.2.12和Ruby 1.9.3

我们如何解决这个问题?

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

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

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

  • 已安装Sidekiq Failures通过Sidekiq Web界面中的选项卡查看故障
  • 揭开问题的根源并修复它
  • 将重试时间缩短为1(从5或6开始……这在申请规则等方面对我有用,但可能对此问题影响不大)
  • 添加了更好的exception处理来捕获和报告这些错误

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