Ключи базы данных 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 ключей / день. Это дает вам хорошие метрики на панели инструментов веб-интерфейса.