簡體   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