Sidekiq Redis数据库密钥随时间增加

时间:2016-05-26 12:53:00

标签: ruby-on-rails redis sidekiq amazon-elasticache

我目前正在使用Sidekiq和我的Rails应用程序以及ElasticCache Redis数据库。我最近注意到,在使用AWS工具监控CurrItems指标时,我看到项目的数量逐渐增加,几乎像步骤一样:

enter image description here

但是,当我查看Sidekiq仪表板中的队列中的作业时,我根本看不到任何备份。我在队列中看到0个作业,0个忙,0个预定。

步骤般的增加似乎发生在每天的非常特定的时间(就在一天结束时),这让我觉得它可能与我运行的计时工作/发条过程有关。但是,我每天只有4个工作,每天工作一次,但在那个时间甚至是那个时间都没有。尽管如此,这里是我的clock.rb文件(为了简单起见,我已经缩短了所有的工作描述和类和方法名称):

module Clockwork
  every(30.seconds, 'Task 1') { Class.method }
  every(30.seconds, 'Task 2') { Class.method }
  every(10.minutes, 'Task 3') { Class.method }
  every(1.day, 'Task 4', :at => '06:00', :tz => 'EST') { Class.method }
  every(10.minutes, 'Task 5') { Class.method }
  every(1.day, 'Task 6', :at => '20:00', :tz => 'UTC') { Class.method }
  every(1.day, 'Task 7', :at => '20:00', :tz => 'UTC') { Class.method }
  every(1.day, 'Task 8', :at => '20:00', :tz => 'UTC') { Class.method }
  every(1.hour, 'Task 9') {Class.method}
  every(30.minutes, 'Task 10') {Class.method}
  every(30.minutes, 'Task 11') {Class.method}
  every(1.hour, 'Task 12') {Class.method}
end

我不确定这是从哪里来的。一旦工作完成,Sidekiq可能无法从数据库中删除密钥?

另一个有用的信息是我运行4个工作人员/服务器。这是我的Redis配置:

if (Rails.env == "production" || Rails.env == "staging")
    redis_domain = ENV['REDIS_DOMAIN']  
    redis_port   = ENV['REDIS_PORT']

    redis_url = "redis://#{redis_domain}:#{redis_port}"

    Sidekiq.configure_server do |config|
      ActiveRecord::Base.establish_connection(
          adapter: "postgresql",
          encoding: "unicode",
          database: ENV["RDS_DB_NAME"],
          pool: 25,
          username: ENV["RDS_USERNAME"],
          password: ENV["RDS_PASSWORD"],
          host: ENV["RDS_HOST"],
          port: 5432
      )

      config.redis = {
        namespace: "sidekiq",
        url: redis_url
      }

    end

    Sidekiq.configure_client do |config|
      config.redis = {
        namespace: "sidekiq",
        url: redis_url
      }
    end
end

任何人都知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

过去5年中,每天都会存储历史作业指标。你看到那些4-6键/天。这为Web UI的仪表板提供了很好的指标。