Ключи базы данных Sidekiq Redis увеличиваются со временем

В настоящее время я использую Sidekiq с моим приложением Rails в работе вместе с базой данных ElasticCache Redis. Недавно я заметил, что при мониторинге метрики CurrItems с помощью инструментов AWS я вижу, что количество элементов постепенно увеличивается с течением времени почти ступенчатым образом:

Однако, когда я смотрю на рабочие места в очереди на панели управления 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 ответ

Решение

Исторические показатели работы хранятся ежедневно, в течение последних 5 лет. Вы видите эти 4-6 ключей / день. Это дает вам хорошие метрики на панели инструментов веб-интерфейса.

Другие вопросы по тегам