Windows Server 2008でRedis 2.8.19を実行しています。Redisヒープ用のディスク領域が不足しているというエラーが表示されます。 (fork()の代わりのメモリマッピングファイル)。
「heapdir」を設定したディレクトリに最大50GBの空き容量があるにもかかわらず、cfgに「maxheap 1024M」がある場合にのみ、Redisを実行できます。
Maxheapを高くして、またはmaxheapなしで実行しようとすると、次のエラー(PowerShell)が発生します。
PS C:\ Users\admasgve> cd D:\ redis-2.8.19
PS D:\ redis-2.8.19>。\ redis-server.exe
[7476] 25 Feb 09:32:38.419#WindowsバージョンのRedisは、永続化操作で使用されるフォークされたプロセスとヒープを共有するために、大きなメモリマップファイルを割り当てます。このファイルは、現在の作業ディレクトリまたは.confファイルの「heapdir」ディレクティブで指定されたディレクトリに作成されます。 Windowsは、このファイルに使用できるディスク領域が不足していることを報告しています(Windowsエラー0x70)。
--maxheapフラグを使用してRedisヒープのサイズを小さくするか、ヒープファイルを十分なスペースのあるローカルドライブに移動することにより、この問題を修正できます。 --maxheapおよび--heapdirフラグの詳細については、バイナリ配布に含まれているドキュメントを参照してください。
Redisは続行できません。終了します。
スクリーンショット: http://i.stack.imgur.com/Xae0f.jpg
redis.windows.conf:
# Generated by CONFIG REWRITE
loglevel verbose
logfile "stdout"
save 900 1
save 300 10
save 60 10000
dir "D:\\redis-2.8.19"
maxmemory 1024M
# maxheap 2048M
heapdir "D:\\redis-2.8.19"
最後の3行以外のすべては、 'CONFIG REWRITE'コマンドを使用してredisによって生成されます。 maxmemory、maxheap、heapdirを使用して、さまざまなことを試しました。
Redisのドキュメントから:
maxmemory/maxheap-maxheapフラグは、このメモリマップファイルの最大サイズと、Redisヒープの合計使用可能スペースを制御します。 maxheapまたはmaxmemoryなしでRedisを実行すると、物理メモリのサイズに等しいメモリマップファイルが作成されます。 Redisヒープは、maxmemoryで指定された値よりも大きくする必要があります
誰かが以前にこの問題に遭遇したことがありますか?何が悪いのでしょうか?
Redisは、デフォルトではホームディレクトリのconfファイルを使用しません。コマンドラインでファイルを渡す必要があります:
.\redis-server.exe redis.windows.conf
これは私のconfファイルにあるものです:
maxheap 2048M
heapdir D:\\redisheap
これらの設定で問題が解決しました。
これは、設定ファイルを使用するよりも便利なmaxheapフラグの使用方法です。
redis-server --maxheap 2gb
マイケルの反応を裏付けるために、私は同じ問題を抱えてきました。
40GB程度の空き容量があり、ページングファイルは4G-8Gに設定されていました。 Redisは、ページングファイルをWindows自体が推奨する量である12GBに設定するまで、起動したくありませんでした。
本当に奇妙な行動。
.\redis-server.exe redis.windows.conf
これは私のconfファイルにあるものです:
maxheap 2048M
heapdir D:\\redisheap
上記のパラメーターをredis-server.exe redis.windows.confに渡した後
ソリューションに感謝して、サービスが開始されました。