Asg*_*erg 17 memory heap powershell windows-server-2008 redis
我在Windows Server 2008上运行Redis 2.8.19.我收到一条错误消息,说我的Redis堆没有足够的磁盘空间.(内存映射文件而不是fork()).
我只能运行Redis,如果我在cfg中有'maxheap 1024M',即使我在'heapdir'设置的目录上有~50GB的可用空间.
如果我尝试使用更高的maxheap或没有maxheap运行它,我会收到此错误(PowerShell):
PS C:\ Users\admasgve> cd D:\ redis-2.8.19
PS D:\ redis-2.8.19>.\ redis-server.exe
[7476] 2009年2月25日: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"
Run Code Online (Sandbox Code Playgroud)
最后3行旁边的所有内容都是由redis使用'CONFIG REWRITE'cmd生成的.我尝试过各种各样的东西,包括maxmemory,maxheap和heapdir.
来自Redis文档:
maxmemory/maxheap - maxheap标志控制此内存映射文件的最大大小,以及Redis堆的总可用空间.在没有maxheap或maxmemory的情况下运行Redis将导致创建的内存映射文件等于物理内存的大小; Redis堆必须大于maxmemory指定的值
以前有人遇到过这个问题吗?我做错了什么?
ado*_*out 19
默认情况下,Redis不在其主目录中使用conf文件.您必须在命令行上传递该文件:
.\redis-server.exe redis.windows.conf
Run Code Online (Sandbox Code Playgroud)
这是我的conf文件中的内容:
maxheap 2048M
heapdir D:\\redisheap
Run Code Online (Sandbox Code Playgroud)
这些设置解决了我的问题.
Mic*_*ael 19
这是如何使用maxheap标志,这比使用配置文件更方便:
redis-server --maxheap 2gb
Run Code Online (Sandbox Code Playgroud)
为了支持迈克尔的回答,我也遇到了同样的问题。
我有大约 40GB 的可用空间,分页文件设置为 4G-8G。Redis 不想启动,直到我将分页文件设置为 Windows 本身推荐的大小(12GB)。
真是奇怪的行为。