我在Windows Server 2008上运行Redis 2.8.19。 我收到一条错误消息,说我的Redis堆没有足够的磁盘空间。 (内存映射文件而不是fork())。
我只能让Redis运行,如果我有超过1024M'在cfg中,即使我在我设置的目录中有~50GB的可用空间' heapdir'到。
如果我尝试使用更高的maxheap或没有maxheap运行它,我会收到此错误(PowerShell):
PS C:\ Users \ admasgve> cd D:\ redis-2.8.19
PS D:\ redis-2.8.19> \ redis的-SERVER.EXE
[7476] 09年2月25日:32:38.419# Windows版本的Redis分配一个大内存映射文件进行共享 具有在持久性操作中使用的分叉进程的堆。这个文件 将在当前工作目录或指定的目录中创建 ' heapdir' .conf文件中的指令。 Windows报告说有 此文件可用的磁盘空间不足(Windows错误0x70)。
您可以通过减小Redis堆的大小来解决此问题 --maxheap标志,或通过将堆文件移动到具有足够的本地驱动器 空间。 有关更多信息,请参阅二进制发行版附带的文档 有关--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行旁边的所有内容都是由redis使用' CONFIG REWRITE'生成的。 CMD。我尝试了各种各样的东西,包括maxmemory,maxheap和heapdir。
来自Redis文档:
maxmemory / maxheap - maxheap标志控制此内存映射文件的最大大小,以及Redis堆的总可用空间。在没有maxheap或maxmemory的情况下运行Redis将导致创建的内存映射文件等于物理内存的大小; Redis堆必须大于maxmemory
指定的值
以前有人遇到过这个问题吗?我做错了什么?
答案 0 :(得分:19)
默认情况下,Redis不在主目录中使用conf文件。您必须在命令行中传递该文件:
.\redis-server.exe redis.windows.conf
这是我的conf文件中的内容:
maxheap 2048M
heapdir D:\\redisheap
这些设置解决了我的问题。
答案 1 :(得分:19)
这是如何使用maxheap标志,这比使用配置文件更方便:
redis-server --maxheap 2gb
答案 2 :(得分:1)
为了支持迈克尔的回应,我遇到了同样的问题。
我有~40GB的可用空间,页面文件设置为4G-8G。 在我将页面文件设置为Windows自己推荐的数量(12GB)之前,Redis不想启动。
真的很奇怪beahaviour。
答案 3 :(得分:0)
.\redis-server.exe redis.windows.conf
这是我的conf文件中的内容:
maxheap 2048M
heapdir D:\\redisheap
在redis-server.exe redis.windows.conf
中传递上述参数后该服务已经开始为我感谢解决方案。
答案 4 :(得分:-1)
maxheap 2048M
heapdir D:\"服务器所在的位置
这应解决问题如果您有同样的问题,请告诉我