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

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

  • D上的可用空间:49,4 GB
  • C上的可用空间:2,71 GB
  • 总RAM:16 GB
  • 空闲RAM:~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"
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)


ior*_*vic 2

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

我有大约 40GB 的可用空间,分页文件设置为 4G-8G。Redis 不想启动,直到我将分页文件设置为 Windows 本身推荐的大小(12GB)。

真是奇怪的行为。