web-dev-qa-db-fra.com

Le serveur Redis ne peut pas exécuter plus de 1024 M maxheap

J'exécute Redis 2.8.19 sur Windows Server 2008 . Je reçois une erreur indiquant que l'espace disque est insuffisant pour mon segment Redis. (Le fichier de mappage de mémoire au lieu de fork ()).

Je ne peux lancer Redis que si j'ai «maxheap 1024M» dans le cfg, même si j'ai environ 50 Go d'espace libre sur le répertoire que j'ai défini sur «heapdir».

Si j'essaye de l'exécuter avec maxheap supérieur ou sans maxheap, j'obtiens cette erreur (PowerShell):

PS C:\Users\admasgve> cd D:\redis-2.8.19

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

[7476] 25 février 09: 32: 38.419 # La version Windows de Redis alloue un fichier mappé à grande mémoire pour le partage le tas avec le processus forké utilisé dans les opérations de persistance. Ce fichier sera créé dans le répertoire de travail en cours ou dans le répertoire spécifié par la directive 'heapdir' dans le fichier .conf. Windows signale qu'il y a espace disque insuffisant disponible pour ce fichier (erreur Windows 0x70).

Vous pouvez résoudre ce problème en réduisant la taille du segment Redis avec l'indicateur --maxheap, ou en déplaçant le fichier de segment de mémoire sur un lecteur local avec suffisamment de espace. Veuillez consulter la documentation fournie avec les distributions binaires pour plus d'informations détails sur les drapeaux --maxheap et --heapdir.

Redis ne peut pas continuer. En sortant.

Capture d'écran: http://i.stack.imgur.com/Xae0f.jpg

  • Espace libre sur D: 49,4 Go 
  • Espace libre sur C: 2,71 Go
  • RAM totale: 16 Go
  • RAM libre: ~ 9 Go

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"

Tout ce qui se trouve à côté des 3 dernières lignes est généré par redis avec la cmd 'CONFIG REWRITE'. J'ai essayé diverses choses, avec maxmemory, maxheap et heapdir.

De la documentation Redis:

maxmemory/maxheap - l'indicateur maxheap contrôle la taille maximale de ce fichier mappé en mémoire, ainsi que l'espace total utilisable pour le segment Redis. Si vous exécutez Redis sans utiliser maxheap ou maxmemory, vous créez un fichier mappé en mémoire égal à la taille de la mémoire physique. Le tas Redis doit être plus grand que la valeur spécifiée par maxmemory

Quelqu'un at-il déjà rencontré ce problème? Qu'est-ce que je fais mal?

17
Asger Vestbjerg

Redis n'utilise pas le fichier conf dans son répertoire personnel par défaut. Vous devez passer le fichier sur la ligne de commande:

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

C'est ce qui est dans mon fichier de conf:

maxheap 2048M
heapdir D:\\redisheap

Ces paramètres ont résolu mon problème.

19
adotout

Voici comment utiliser l'indicateur maxheap, ce qui est plus pratique que d'utiliser un fichier de configuration:

redis-server --maxheap 2gb
19
Michael

Pour sauvegarder la réponse de Michael, j'ai eu le même problème.

J'avais ~ 40 Go d'espace libre et un fichier de pagination réglé sur 4G-8G. Redis ne voulait pas commencer tant que je n'avais pas défini le fichier de pagination au montant recommandé par Windows, soit 12 Go.

Un comportement vraiment étrange.

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

C'est ce qui est dans mon fichier de conf:

maxheap 2048M

heapdir D:\\redisheap

après avoir passé les paramètres ci-dessus dans redis-server.exe, redis.windows.conf

le service a commencé pour moi, merci pour la solution.

0
samminga srinu