【问题标题】:Redis server can't run more than 1024M maxheapRedis 服务器不能运行超过 1024M 的 maxheap
【发布时间】: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


【解决方案1】:

为了支持迈克尔的回复,我遇到了同样的问题。

我有大约 40GB 的可用空间,并且页面文件设置为 4G-8G。 Redis 不想启动,直到我将分页文件设置为 Windows 自己推荐的大小,即 12GB。

真是奇怪的行为。

【讨论】:

  • 确实很奇怪。我最终放弃并在 Linux 虚拟机上运行它,它运行良好。
  • 我可以确认 - Redis 没有为我启动,因为heapdir 参数指向的空间足够大。在我使用页面文件释放磁盘上的一些空间后,它工作正常。
【解决方案2】:

默认情况下,Redis 不使用其主目录中的 conf 文件。您必须在命令行中传递文件:

.\redis-server.exe redis.windows.conf

这是我的 conf 文件中的内容:

maxheap 2048M
heapdir D:\\redisheap

这些设置解决了我的问题。

【讨论】:

  • 好吧,让 Redis 使用配置文件并不是我的问题。
【解决方案3】:

这是如何使用maxheap标志,比使用配置文件更方便:

redis-server --maxheap 2gb

【讨论】:

    【解决方案4】:
    .\redis-server.exe redis.windows.conf
    

    这是我的 conf 文件中的内容:

    maxheap 2048M
    
    heapdir D:\\redisheap
    

    在redis-server.exe redis.windows.conf中传入上述参数后

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

    【讨论】:

      【解决方案5】:

      最大堆 2048M

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

      这应该可以解决问题,如果您有同样的问题,请联系我

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-26
        • 2021-10-07
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多