概要
- heroku redisの標準設定だと、古いキーは勝手に消えずメモリ使い切るとエラーする
- redis:maxmemoryの設定を変えておこう
詳細
発生したエラーについて
unityroom.com ですけど今日のお昼ぐらいから断続的にエラー出まくってました。
Redis::CommandError: OOM command not allowed when used memory > 'maxmemory'.
メモリが足りないよエラー。
maxmemory-policy
Heroku Redis | Heroku Dev Center
上記公式ドキュメント参照
noeviction
will return errors when the memory limit is reached.allkeys-lru
will remove less recently used keys first.volatile-lru
will remove less recently used keys first that have an expiry set.allkeys-random
will evict random keys.volatile-random
will evict random keys but only those that have an expiry set.volatile-ttl
will only evict keys with an expiry set and a short TTL.
デフォルトだと noeviction
勝手にキーは消さず、満杯になったらエラーする
変更
- unityroomではキャッシュ目的で使っているので、
volatile-lru
に変更する
heroku redis:maxmemory -a application-name --policy volatile-lru
> heroku redis:info -a application-name ~~~ Maxmemory: volatile-lru ~~~
ちゃんと変わってた。
変えた時間以降エラーが止まってることも確認。
ご不便おかけしてすいませんでした〜