【実務・中級編】 maxmemory設定の深掘り – Redis

「Redisのメモリ上限に達したから、あとは `maxmemory-policy` がうまくやってくれるはずだ」

もしあなたがそんな甘い認識で本番環境の設計を行っているなら、近い将来、システムは必ず沈黙することになる。深夜の呼び出し音とともに、OSのOOM KillerがRedisプロセスを無慈悲に強制終了させる凄惨な光景が目に浮かぶようだ。

Redisは極めて高速で優れたインメモリデータベースだが、その代償としてメモリ管理のすべての主導権と責任を開発者に委ねている。

本稿では、一般の技術書やリファレンスが濁しがちな「`maxmemory` 設定値と物理メモリ(RSS)の乖離のメカニズム」、そして「`maxmemory-policy` がメモリ解放速度、ひいてはメインスレッドのレイテンシに与える破壊的な影響」について、ソースコードやOSカーネルの挙動を踏まえて徹底的に解剖する。

これを理解し、実践することで、あなたの設計するシステムはどんな高負荷下でも静かに、かつ堅牢に稼働し続けるはずだ。

—

1. `maxmemory` の嘘と真実 —— 物理メモリ(RSS)との乖離を解剖する

まず、最も基本的でありながら、最も多くのエンジニアが踏み抜く罠から始めよう。

「`maxmemory` を 8GB に設定したから、このRedisプロセスが消費する物理メモリは最大でも 8GB である」という仮定は、完全に間違っている。

Redisが認識しているメモリ使用量(`used_

コメント

タイトルとURLをコピーしました