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

时间:2015-02-25 09:05:03

标签: powershell memory redis heap windows-server-2008

我在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

  • 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"

最后3行旁边的所有内容都是由redis使用' CONFIG REWRITE'生成的。 CMD。我尝试了各种各样的东西,包括maxmemory,maxheap和heapdir。

来自Redis文档:

  

maxmemory / maxheap - maxheap标志控制此内存映射文件的最大大小,以及Redis堆的总可用空间。在没有maxheap或maxmemory的情况下运行Redis将导致创建的内存映射文件等于物理内存的大小; Redis堆必须大于maxmemory

指定的值

以前有人遇到过这个问题吗?我做错了什么?

5 个答案:

答案 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:\"服务器所在的位置

这应解决问题如果您有同样的问题,请告诉我