Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 47166|Répondre: 1

[Source] Redis MISCONF Redis est configuré pour sauvegarder des instantanés RDB

[Copié le lien]
Publié le 14-05-2021 à 21:18:50 | | | |
En utilisant StackExchange.Redis pour manipuler le cache redis, l’erreur est la suivante :

StackExchange.Redis.RedisServerException: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

Solution temporaire, modifiant le fichier redis.windows.conf,Le service Redis doit être relancé, défini comme suit :
Si vous ne souhaitez pas redémarrer le service Redis, vous pouvez utiliser la commande redis-cli pour le configurer comme suit :



L’explication est la suivante :
# Par défaut, Redis cessera d’accepter les écritures si les instantanés RDB sont activés
# (au moins un point de sauvegarde) et la dernière sauvegarde en arrière-plan a échoué.
# Cela rendra l’utilisateur conscient (de manière difficile) que les données ne persistent pas
# Sur le disque correctement, sinon il y a de fortes chances que personne ne le remarque et certains
# Le désastre arrivera.
#
# Si le processus de sauvegarde en arrière-plan recommence à fonctionner, Redis le fera
# autoriser automatiquement les écritures à nouveau.
#
# Cependant, si vous avez configuré votre surveillance correcte du serveur Redis
# et persistance, vous pouvez vouloir désactiver cette fonctionnalité pour que Redis
# continuer à travailler normalement même s’il y a des problèmes avec le disque,
# les permissions, et ainsi de suite.
En résumé : Redis doit forker un processus principal afin d’éviter que celui-ci ne simule la mort lors de l’enregistrement des données sur le disque dur, puis compléter l’opération de sauvegarde des données sur le disque dur dans le processus de fork ; si le processus principal utilise 4 Go de mémoire, 4 Go supplémentaires sont nécessaires lorsque le sous-processus fork est nécessaire, à ce moment-là la mémoire n’est pas suffisante, le fork échoue, puis le disque dur d’enregistrement des données échoue également.

Pour consulter les journaux redis, vous devez configurer redis.windows.conf comme suit :

# Spécifie le nom du fichier journal. De plus, « stdout » peut être utilisé pour forcer
# Redis pour enregistrer la sortie standard.
fichier journal « E :/Redis-x64-3.2.100/redis.txt »

Les exceptions pour les logs sont les suivantes :

[8984] 14 mai 14:05:09.060 * Sauvegarde en arrière-plan commencée par pid 8672
[8672] 14 mai 14:05:09.169 #
La version Windows de Redis réserve la mémoire tas à partir du fichier de pagination système
pour le partage avec le processus forké utilisé pour les opérations de persistance. À l’heure actuelle, l’espace libre contigu disponible dans le
fichier de pagination système. Vous pouvez augmenter la taille du fichier de pagination système.
Parfois, un redémarrage défragmente suffisamment le fichier de pagination système pour
cette opération devait être menée à bien avec succès.

Redis ne peut pas continuer. Sortie.
[8984] 14 mai 14:05:09.278 # opération de fourche échouée



Après analyse, il s’est avéré que le problème avec la configuration de taille maximale du tas « maxheap » était dû à un manque de mémoire disponible.

Solution

Ouvrez le fichier de configuration de Redis « redis.windows.conf » et trouvez la section de code suivante :


# Le tas Redis doit être plus grand que la valeur spécifiée par la maxmemory
# flag, car l’allosseur de tas a ses propres exigences mémoire et
# La fragmentation du tas est inévitable. Si seul le drapeau maxmemory est
# Spécifié, maxheap sera réglé à 1,5*MaxMemory. Si le drapeau maxheap est
# spécifié avec maxmemory, le drapeau maxheap sera automatiquement
# augmenté si elle est inférieure à 1,5*maxmemory.
#  
# max heap <bytes>

Ajouter ce réglage est une bonne chose,Le service Redis ne démarre pas!!!!!!!
La valeur par défaut est : maxheap 1024000000≈976,56M

Je n’ai pas trouvé ce commentaire dans le fichier de conf, j’ai trouvé quelque chose comme ça :
# N’utilisez pas plus de mémoire que le nombre d’octets spécifié.
# Lorsque la limite de mémoire est atteinte, Redis essaiera de retirer les clés
# selon la politique d’expulsion sélectionnée (voir maxmemory-policy).
#
# Si Redis ne peut pas retirer les clés selon la politique, ou si la politique est
# réglé sur 'noeviction', Redis commencera à répondre avec des erreurs aux commandes
# qui utiliserait plus de mémoire, comme SET, LPUSH, etc., et continuera
# pour répondre à des commandes en lecture seule comme GET.
#
# Cette option est généralement utile lors de l’utilisation de Redis comme cache LRU, ou pour définir
# Une limite de mémoire fixe pour une instance (en utilisant la politique de « noéviction »).
#
# AVERTISSEMENT : Si vous avez des esclaves attachés à une instance avec maxmemory activé,
# la taille des tampons de sortie nécessaires pour alimenter les esclaves est soustraite
# à partir du compte de mémoire utilisée, de sorte que les problèmes réseau / resynchronisations vont
# ne pas déclencher une boucle où les clés sont évacuées, et par conséquent la sortie
# le tampon des esclaves est rempli avec les DAL des clés évacuées, déclenchant la suppression
# de plus de clés, et ainsi de suite jusqu’à ce que la base de données soit complètement vide.
#
# En bref... Si vous avez des esclaves attachés, il est suggéré de mettre un bas
# limite pour maxmemory afin qu’il y ait un peu de RAM libre sur le système pour l’esclave
# Mémoires tampons de sortie (mais cela n’est pas nécessaire si la politique est « noeviction »).
#
# AVERTISSEMENT : ne pas définir maxmemory fera que Redis se termine avec un
# exception hors mémoire si la limite du tas est atteinte.
#
# NOTE : puisque Redis utilise le fichier de pagination système pour allouer la mémoire du tas,
# l’utilisation de la mémoire du Jeu de travail affichée par le Gestionnaire des tâches Windows ou par autre
# des outils comme ProcessExplorer ne seront pas toujours précis. Par exemple, à droite
# après une sauvegarde en arrière-plan des fichiers RDB ou AOF, la valeur de l’ensemble de travail
# peut chuter significativement. Afin de vérifier la quantité correcte de mémoire utilisée
# par le serveur redis-server pour stocker les données, utilisez la commande client INFO. LES INFOS
# commande n’indique que la mémoire utilisée pour stocker les données Redis, pas l’extra
# mémoire utilisée par le processus Windows pour ses propres besoins. Th3 quantité supplémentaire
# de mémoire non rapportée par la commande INFO peut être calculée en soustrayant le
# Jeu de travail de pic rapporté par le Gestionnaire des tâches Windows et le used_memory_peak
# signalé par la commande INFO.
#
# maxmemory <bytes>

Avertissement : Si la limite du tas est atteinte, ne pas définir maxmemory provoquera la fin de Redis avec une exception de rupture de mémoire.

Note : En raison deRedis utilise des fichiers de pagination système pour allouer la mémoire heap

Le Gestionnaire des tâches Windows ou d’autres outils comme ProcessExplorer n’affichent pas toujours une utilisation précise de la mémoire des ensembles de travail. En termes simples,L’utilisation de la mémoire affichée par le Gestionnaire des tâches n’est pas exacte!!!

Utilisez la commande info pour interroger comme suit :

# Mémoire
used_memory :2011338768
used_memory_human : 1,87G
used_memory_rss :2011279992
used_memory_rss_human : 1,87G
used_memory_peak :2011338768
used_memory_peak_human : 1,87G
total_system_memory :0
total_system_memory_human :0B
used_memory_lua :37888
used_memory_lua_human :37,00K
maxmemory:0
maxmemory_human :0B
maxmemory_policy : noeviction
mem_fragmentation_ratio :1.00
mem_allocator :jemalloc-3.6.0



Les réglages sont les suivants :

1073741824 octets = 1G
Après le paralisation, le client .net redis ajoute une erreur de cache comme suit :

La commande OOM n’est pas autorisée lorsqu’on utilise la mémoire > 'maxmemory'.
# POLITIQUE MAXMEMORY : comment Redis choisira ce qu’il faut retirer quand maxmemory
# est atteint. Vous pouvez choisir parmi cinq comportements :
#
# volatile-lru -> supprimer la clé avec un ensemble d’expiration en utilisant un algorithme LRU
# allkeys-lru -> supprimer toute clé selon l’algorithme LRU
# volatile-aléatoire -> supprimer une clé aléatoire avec un ensemble d’expiration
# Allkeys-random -> Supprime une touche aléatoire, n’importe quelle clé
# volatile-ttl -> retirer la clé avec l’heure d’expiration la plus proche (TTL mineur)
# Noeviction - > n’expirent pas du tout, il se contente de retourner une erreur lors des opérations d’écriture
#
# Note : avec l’une des politiques ci-dessus, Redis renverra une erreur à l’écriture
# Opérations, lorsqu’il n’y a pas de clés appropriées pour l’expulsion.
#
# À la date d’écriture, ces commandes sont : set setnx setex append
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# Sinter Sinterstore Sunion Sunionstore Sdiff Sdiffstore zadd Zincrby
# zunionstore zinterstore hset hsetx hmset hincrby incrby decrby
# getset mset msetnx exec sort
#
# Le défaut est :
#
# Politique de non-expulsion de la politique MaxMemory
#MAXMEMORY策略 : Quand MAXMEMORY

#到达. Vous pouvez choisir parmi cinq comportements :

#

#volatile LRU-> utilise l’algorithme LRU pour supprimer les clés avec des ensembles d’expiration

#allkeys LRU-> supprimer toute clé selon l’algorithme LRU

#volatile aléatoire - > supprimer les clés aléatoires avec des ensembles expirés

#allkeys > aléatoire supprimer des clés aléatoires, des clés arbitraires

#volatile TTL-> Supprimer la clé ayant le temps d’expiration le plus proche (TTL mineur)

#noeviction-> n’expire pas du tout, ne renvoie qu’une erreur d’écriture

#

#注意 : Pour chacune des stratégies ci-dessus, Redis renvoie une erreur lors de l’écriture

#操作, lorsqu’il n’y a pas de clé appropriée pour l’expulsion.

#

#在编写之日, ces commandes sont : set setnx setex append

#递增递减rpush lpushx lpushx linsert lset rpoplpush sadd

#烧结店sunion sunionstore sdiff sdiff sdiffstore zadd zincrby

#zunionstore Zinterstore Hset Hset, HMSET Hincrby Incrby Decrby

#getset mset mset, tri exécutif

#

#默认值为:

#

#maxmemory策略无效
Vous devez également configurer les configurations suivantes :

Le réglage redis par défaut est très conservateur, c’est-à-dire qu’il n’est pas stocké après que la limite de mémoire a dépassé, et la politique peut être modifiée pour l’algorithme LRU (l’algorithme le moins utilisé récemment) – les informations nouvellement stockées remplaceront les anciennes.

Révision:

Différence de persistance de Redis entre RDB et AOF
https://www.itsvse.com/thread-9555-1-1.html

L’installation Docker exécute le cache Redis
https://www.itsvse.com/thread-8995-1-1.html

Des exemples expliquent ce que sont la pénétration du cache, l’avalanche de cache et la défaillance du cache Reddis
https://www.itsvse.com/thread-8968-1-1.html

Des jokers redis pour supprimer les clés en bloc
https://www.itsvse.com/thread-7957-1-1.html

Tutoriel d’installation Redis 5.0.3 de CentOS 7
https://www.itsvse.com/thread-7201-1-1.html

Installez l’extension Redis sous php 5.5.7 sous CentOS
https://www.itsvse.com/thread-7200-1-1.html

Combien de clés peuvent être stockées dans une instance Redis, et quelles sont les clés et valeurs maximales ?
https://www.itsvse.com/thread-6848-1-1.html

La question des redis chinois ne peut pas être correctement présentée
https://www.itsvse.com/thread-5032-1-1.html

Redis permet l’accès à distance
https://www.itsvse.com/thread-5011-1-1.html

Windows ne démarre pas le service Redis, erreur 1067 : Le processus se termine de manière inattendue.
https://www.itsvse.com/thread-5010-1-1.html

CentOS a installé Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis configure les mots de passe de connexion et d’accès à distance
https://www.itsvse.com/thread-4101-1-1.html

Redis vide le cache de données
https://www.itsvse.com/thread-4027-1-1.html

Configuration de persistance de Redis et persistance désactivée
https://www.itsvse.com/thread-4012-1-1.html

La différence entre sauvegarder et sauvegarder dans Redis
https://www.itsvse.com/thread-4010-1-1.html

Redis : deux méthodes et principes de persistance
https://www.itsvse.com/thread-4009-1-1.html

Redis a trois façons de commencer
https://www.itsvse.com/thread-4008-1-1.html

Méthode Redis pour masquer les fenêtres en ligne de commande
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash Problème de la valeur de hachage
https://www.itsvse.com/thread-2587-1-1.html

5 choses à savoir avant d’utiliser Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis modifie le numéro de port par défaut et définit le mot de passe d’accès
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bit téléchargement, adresse officielle de téléchargement
https://www.itsvse.com/thread-2576-1-1.html

Redis utilise des scripts Lua pour des explications détaillées
https://www.itsvse.com/thread-9634-1-1.html

Test de performance Redis Benchmark
https://www.itsvse.com/thread-9645-1-1.html

(Fin)






Précédent:Jugement NPOI sur le type de date de la cellule
Prochain:Explication détaillée de l’opération Excel NPOI
 Propriétaire| Publié le 12-07-2023 à 21:08:55 |
Stratégies d’élimination des huit mémoire Redis
https://www.itsvse.com/thread-10626-1-1.html
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com