【发布时间】:2015-04-27 04:58:09
【问题描述】:
我在 Windows Server 2008 上运行 Redis 2.8.19。 我收到一条错误消息,指出我的 Redis 堆的磁盘空间不足。 (内存映射文件而不是 fork())。
如果我在 cfg 中有“maxheap 1024M”,我只能让 Redis 运行,即使我已将“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] 2 月 25 日 09:32:38.419 # Windows版Redis分配大内存映射文件用于共享 具有用于持久性操作的分叉进程的堆。这个文件 将在当前工作目录或指定的目录中创建 .conf 文件中的“heapdir”指令。 Windows 报告有 此文件可用的磁盘空间不足(Windows 错误 0x70)。
您可以通过减小 Redis 堆的大小来解决这个问题 --maxheap 标志,或者通过将堆文件移动到具有足够的本地驱动器 空间。 请参阅二进制发行版中包含的文档以获取更多信息 --maxheap 和 --heapdir 标志的详细信息。
Redis 无法继续。退出。
截图:http://i.stack.imgur.com/Xae0f.jpg
- D 上的可用空间:49.4 GB
- C 上的可用空间:2.71 GB
- 总内存:16 GB
- 可用内存:~9 GB
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指定的值
以前有人遇到过这个问题吗?我做错了什么?
【问题讨论】:
-
我已经看到了,我自己从系统驱动器中清除了更多空间,然后转到“系统属性>性能>设置>高级>虚拟内存>更改”然后关闭自动管理页面文件大小重新打开,然后将当前分配的大小增加到推荐的数量,然后 redis 开始正常。
-
@Michael 的解决方案也对我有用
标签: powershell memory redis heap-memory windows-server-2008