Sidekiqを起動すると下記のワーニングが出力されていたので少し調べた。
1 |
WARNING: Your Redis instance will evict Sidekiq data under heavy load |
ワーニングの原因
これは稼働中のRedisが‘maxmemory’ に達したときの挙動に関してSidekiqが出力するワーニングです。
ここで定義されています。
このワーニングが出ている場合、Redisのメモリが不足した時にSidekiqのJobを削除する可能性があります。
Redisのmaxmemoryとは、Redisで使用できるメモリ容量が無くなった時のことです。
Redisは使用できるメモリがなくなった際にどう動くかをmaxmemory-policyで指定できます。
Redisで指定可能な値は下記の通りです。
- noeviction : メモリ使用量が制限に達しており、クライアントが追加のメモリを要求するコマンド(DEL やいくつかの例外を除く、ほとんどの書き込みコマンド)を実行しようとした場合はエラーを返す。
- allkeys-lru : 新しいデータのためにスペースを空けるため、もっとも最近使われていない(LRU)キーから削除するよう試みる。
- volatile-lru : 新しいデータのためにスペースを空けるため、もっとも最近使われていない(LRU)キーから削除するよう試みる。ただし、 expire set が指定されたキーのみを対象とする。
- volatile-random : 新しいデータのためにスペースを空けるため、ランダムなキーを選んで削除する。ただし、 expire set が指定されたキーのみを対象とする。
- volatile-random : 新しいデータのためにスペースを空けるため、ランダムなキーを選んで削除する。ただし、 expire set が指定されたキーのみを対象とする。
- volatile-random : 新しいデータのためにスペースを空けるため、ランダムなキーを選んで削除する。ただし、 expire set が指定されたキーのみを対象とする。
Sidekiqではnoevictionを推奨しているので、redis側の設定を変えればワーニングは出なくなります。
メモリが十分にあれば関係ないので、AWSのElastiCache使っている場合はメトリクス監視していれば問題ないような気もするけどね。
じゃあね~。