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)。