現在、私のRailsアプリケーションでSideKをProgressでElasticCache Redisデータベースと共に使用しています。私が見たときに、しかしSidekiq時間の経過とともにデータベースのキーが増加する
:私は、AWSのツールを使用してメトリックCurrItemsを監視する場合、私はアイテムの数が徐々にほとんど階段状のように時間の経過とともに増加見ることが最近気づきましたSidekiqダッシュボードのジョブをキューに入れても、何もバックアップされていません。私は待ち行列に0ジョブ、ビジー0、スケジュールされた0を見る。
階段状の増加は、毎日非常に特定の時間に発生するように思われます(その日の終わりに)私はそれが私が実行している仕事/時計のプロセスと関連していると思いました。しかし、私は1日に1回実行する4つのジョブしかなく、その間に実行されたジョブも、その時間の近くに実行されるジョブもありません。私はこれがどこから来ている、非常にわからないんだけど
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
:ちょうどかかわらず、良い対策のために、ここに私のclock.rbファイル(私は簡単にするためのすべてのジョブの説明とクラス名とメソッド名を短絡している)です。ジョブが完了したら、Sidekiqはデータベースからキーを削除しないでしょうか?
もう1つの潜在的な有用な情報は、私が4つのワーカー/サーバーを実行していることです。ここにレディスの設定があります:
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
これはなぜ起こっているのでしょうか?
ああ、それは問題に繋がるわけではありませんが、Redisデータベースではキーがいっぱいになるとパージを開始しますか?もしそうなら、鍵は5年間保管されているので、DBの推奨サイズは生産中でなければなりませんか?私たちは2.78GBのRAMを持つElasticCache t2.mediumを使用します – Karim
各キーは100バイト必要です。 5年間のデータでは4 * 100 * 365 * 5または720KBです。 –
素晴らしい!ありがとうマイク – Karim