Redis随机统计抱怨无法保存RDB快照

时间:2018-01-19 18:19:43

标签: ruby-on-rails ruby redis cron sidekiq

所以我正在运行一个利用redis和sidekiq的Rails应用程序。 config/sidekiq.rb文件包含有关设置Redis池大小的一些信息,但我对其进行了评论,以便Sidekiq可以动态地确定(从我的理解)。

因此,当我在后台运行一些sidekiq作业时,一切正常。然而,在大约30-60分钟之后,sidekiq似乎仍在运行,但它像每分钟一样吐出这个错误(猜测它是我的sidekiq cron作业的间隔):

  

2018-01-19T17:52:21.906Z 95551 TID-ovs5kqylg错误:CRON JOB:MISCONF   Redis配置为保存RDB快照,但目前不是   能够坚持在磁盘上。可以修改数据集的命令是   禁用,因为此实例配置为报告错误   如果RDB快照失败则写入(stop-writes-on-bgsave-error选项)。   有关RDB错误的详细信息,请查看Redis日志。

     

2018-01-19T17:52:21.906Z 95551 TID-ovs5kqylg错误:CRON JOB:   /home/nutella/.rvm/rubies/ruby-2.5.0/lib/ruby/gems/2.5.0/gems/redis-4.0.1/lib/redis/client.rb:119:in`call'

要解决此问题,我必须杀死sidekiq进程并再重新启动30-60分钟。

1 个答案:

答案 0 :(得分:1)

你没有足够的内存。

默认情况下,Redis配置为将其数据保存在磁盘上。要实现这一点,它会从主进程创建一个fork。至少对于Linux系统,子进程iherits使用来自父进程的RAM。看来你还没有离开。

最简单的选择是增加RAM。 Sidekiq消耗大量内存,因此当关闭Sidekiq时问题就消失了。

您可以将Redis配置更改为在未保存时不抛出异常,但它不会为您节省内存泄漏。