繁体   English   中英

Redis 服务器不能运行超过 1024M 的 maxheap

[英]Redis server can't run more than 1024M maxheap

我在 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] 2 月 25 日 09:32:38.419 # Redis 的 Windows 版本分配了一个大内存映射文件,用于与持久性操作中使用的分叉进程共享堆。 该文件将在当前工作目录或 .conf 文件中的“heapdir”指令指定的目录中创建。 Windows 报告此文件可用磁盘空间不足(Windows 错误 0x70)。

您可以通过使用 --maxheap 标志减小 Redis 堆的大小或将堆文件移动到具有足够空间的本地驱动器来解决此问题。 有关 --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”命令生成的。 我尝试了各种方法,包括 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

该服务已为我启动,感谢您的解决方案。

最大堆 ​​2048M

heapdir D:\\"您的服务器所在的位置

这应该可以解决问题如果你有同样的问题请Ping我

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM