it-swarm.com.de

Der Redis-Server kann maximal 1024 Millionen Maxheap ausführen

Ich verwende Redis 2.8.19 unter Windows Server 2008. Ich bekomme die Fehlermeldung, dass ich nicht genügend Speicherplatz für meinen Redis-Heap habe. (Die Speicherzuordnungsdatei statt Fork ()).

Ich kann Redis nur zum Laufen bringen, wenn ich 'maxheap 1024M' in der cfg habe, obwohl ich ~ 50 GB freien Speicherplatz in dem Verzeichnis habe, in dem ich 'heapdir' eingestellt habe.

Wenn ich versuche, es mit höherem Maxheap oder ohne Maxheap auszuführen, erhalte ich diesen Fehler (PowerShell):

PS C:\Benutzer\admasgve> CD D:\redis-2.8.19

PS D:\redis-2.8.19>.\Redis-server.exe

[7476] 25 Feb 09: 32: 38.419 # Die Windows-Version von Redis weist eine große, dem Speicher zugeordnete Datei zur gemeinsamen Nutzung von .__ zu. der Heap mit dem gegabelten Prozess, der bei Persistenzoperationen verwendet wird. Diese Datei wird im aktuellen Arbeitsverzeichnis oder im durch .__ angegebenen Verzeichnis erstellt. Die Direktive 'heapdir' in der .conf-Datei. Windows meldet, dass es .__ gibt. für diese Datei ist nicht genügend Speicherplatz verfügbar (Windows-Fehler 0x70).

Sie können dieses Problem beheben, indem Sie entweder die Größe des Redis-Heapspeichers mit .__ reduzieren. das Flag "--maxheap" oder durch Verschieben der Heap-Datei mit ausreichend .__ auf ein lokales Laufwerk. Platz. Weitere Informationen finden Sie in der Dokumentation der Binärdistributionen Details zu den Flags --maxheap und --heapdir.

Redis kann nicht fortfahren. Beenden.

Screenshot: http://i.stack.imgur.com/Xae0f.jpg

  • Freier Speicherplatz auf D: 49,4 GB 
  • Freier Speicherplatz auf C: 2,71 GB
  • RAM insgesamt: 16 GB
  • Freier 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"

Alles außer den letzten 3 Zeilen wird von redis mit dem 'CONFIG REWRITE' - Cmd generiert. Ich habe verschiedene Dinge ausprobiert, mit maxmemory, maxheap und heapdir.

Aus der Redis-Dokumentation:

maxmemory/maxheap - Das Maxheap-Flag steuert die maximale Größe dieser Speicherabbilddatei sowie den insgesamt verfügbaren Speicherplatz für den Redis-Heap. Wenn Redis ohne Maxheap oder Maxmemory ausgeführt wird, wird eine Speicherzuordnungsdatei erstellt, die der Größe des physischen Speichers entspricht. Der Redis-Heap muss größer sein als der vom maxmemory angegebene Wert

Hat jemand dieses Problem schon einmal gesehen? Was mache ich falsch?

17
Asger Vestbjerg

Redis verwendet die conf-Datei standardmäßig nicht im Basisverzeichnis. Sie müssen die Datei in der Befehlszeile übergeben:

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

Folgendes ist in meiner conf-Datei enthalten:

maxheap 2048M
heapdir D:\\redisheap

Diese Einstellungen haben mein Problem behoben.

19
adotout

So verwenden Sie das Maxheap-Flag, das bequemer ist als die Verwendung einer Konfigurationsdatei:

redis-server --maxheap 2gb
19
Michael

Um Michaels Antwort zu bestätigen, hatte ich das gleiche Problem.

Ich hatte ~ 40 GB freien Speicherplatz und die Auslagerungsdatei auf 4G-8G eingestellt. Redis wollte erst starten, wenn ich die Auslagerungsdatei auf die von Windows selbst empfohlene Menge von 12 GB eingestellt habe.

Wirklich seltsames Verhalten.

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

Folgendes ist in meiner conf-Datei enthalten:

maxheap 2048M

heapdir D:\\redisheap

nach Übergeben der obigen Parameter in redis-server.exe redis.windows.conf

der service hat für mich begonnen danke für die lösung.

0
samminga srinu