1. ホーム
  2. レディス

redis logs show バックグラウンドで保存できない fork メモリを確保できない

2022-03-21 19:25:08

なぜなら、デフォルトでredisはメインプロセスが死ぬのを防ぐために、ディスクに永続化するプロセスをフォークするからです(大量のデータがあるとき)。しかし、メインプロセスが大量のメモリを消費する場合、フォークプロセスが常に成功するとは限らないので、このエラーが発生する。





redisプロンプトは、このように変更することができます。

5223:M 28 Apr 17:57:53.908 # WARNING overcommit_memory is set to 0! 低メモリ環境ではバックグラウンド保存に失敗する可能性があります



の条件を満たす必要があります。この問題を解決するには、/etc/sysctl.conf に 'vm.overcommit_memory = 1' を追加して、再起動するか、コマンドを実行します。



sysctl vm.overcommit_memory = 1'を設定すると、有効になります。





Linux カーネルは、パラメータ vm.overcommit_memory の設定に基づいて、解放するかどうかを決定します。



    vm.overcommit_memory = 1, 直接解除



    vm.overcommit_memory = 0: 次に、このリクエストで割り当てられた仮想メモリのサイズと、システムの現在の空き物理メモリ+スワップを比較し、解放するかどうか決定します。



    vm.overcommit_memory = 2: プロセスに割り当てられたすべての仮想メモリーと要求された仮想メモリー、およびシステムの現在の空き物理メモリー+スワップを比較し、解放するかどうか決定します。