Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 47166|Antwort: 1

[Quelle] Redis MISCONF Redis ist so konfiguriert, dass RDB-Snapshots gespeichert werden

[Link kopieren]
Veröffentlicht am 14.05.2021, 21:18:50 | | | |
Mit StackExchange.Redis zur Manipulation des Redis-Caches lautet der Fehler wie folgt:

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.

Übergangslösung, die Datei redis.windows.conf modifizieren,Der Redis-Dienst muss wieder aufgenommen werden, setzt sich wie folgt auf:
Wenn Sie den Redis-Dienst nicht neu starten möchten, können Sie den Befehl rediscli verwenden, um ihn wie folgt einzurichten:



Die Erklärung lautet wie folgt:
# Standardmäßig akzeptiert Redis keine Schreibvorgänge mehr, wenn RDB-Snapshots aktiviert sind
# (mindestens ein Speicherpunkt) und der letzte Hintergrundspeicher fehlschlug.
# Das macht den Nutzer (auf harte Weise) bewusst, dass die Daten nicht gespeichert werden
# auf der Disk richtig, sonst wird es wahrscheinlich niemand bemerken und einige
# Katastrophen werden geschehen.
#
# Wenn der Hintergrundspeicherprozess wieder funktioniert, wird Redis es tun
# erlaubt automatisch erneut Schreiben.
#
# Wenn du jedoch deine ordnungsgemäße Überwachung des Redis-Servers eingerichtet hast
# und Persistenz solltest du diese Funktion deaktivieren, damit Redis es auch tut
# arbeite weiter wie gewohnt, auch wenn es Probleme mit der Festplatte gibt,
# Erlaubnisse und so weiter.
Einfach ausgedrückt: Redis muss einen Hauptprozess forken, um zu verhindern, dass der Hauptprozess beim Speichern der Daten auf der Festplatte den Tod vortäuscht, und dann den Vorgang abschließen, Daten auf der Festplatte im Fork-Prozess zu speichern. Wenn der Hauptprozess 4 GB Speicher verbraucht, werden weitere 4 GB benötigt, wenn der Fork-Unterprozess benötigt wird. Zu diesem Zeitpunkt reicht der Speicher nicht aus, der Fork schlägt fehl und dann fällt auch die datensparende Festplatte aus.

Um die Redis-Logs einzusehen, musst du redis.windows.conf wie folgt konfigurieren:

# Gib den Namen der Logdatei an. Außerdem kann 'Stdout' zum Erzwingen verwendet werden.
# Redis, um sich auf die Standardausgabe einzuloggen.
Logfile "E:/Redis-x64-3.2.100/redis.txt"

Die Log-Ausnahmen sind wie folgt:

[8984] 14. Mai 14:05:09.060 * Hintergrundspeicherung gestartet von pid 8672
[8672] 14. Mai 14:05:09.169 #
Die Windows-Version von Redis reserviert Heap-Speicher aus der System-Paging-Datei
zum Teilen mit dem geforkten Prozess, der für Persistenzoperationen verwendet wird. Zu diesem Zeitpunkt steht in der
System-Paging-Datei. Du kannst die Größe der System-Paging-Datei erhöhen.
Manchmal defragmentiert ein Neustart die System-Paging-Datei ausreichend für
Diese Operation erfolgreich abgeschlossen.

Redis kann nicht weitermachen. Ich gehe raus.
[8984] 14. Mai 14:05:09.278 # Gabelvorgang fehlgeschlagen



Nach Analyse stellte sich heraus, dass das Problem mit der maximalen Heap-Größe "Maxheap"-Konfiguration auf unzureichenden verfügbaren Speicher zurückzuführen war.

Lösung

Öffnen Sie die Konfigurationsdatei von Redis "redis.windows.conf" und finden Sie den folgenden Codeabschnitt:


# Der Redis-Heap muss größer sein als der vom Maxmemory angegebene Wert
#-Flagge, da der Heap-Allocator eigene Speicheranforderungen hat und
# Fragmentierung des Haufens ist unvermeidlich. Wenn nur das maxmemory-Flag
# spezifiziert, wird Maxheap auf 1,5*maxmemory gesetzt. Wenn die Maxheap-Flagge lautet
# zusammen mit maxmemory angegeben, wird das maxheap-Flag automatisch angegeben
# erhöht, wenn er kleiner als 1,5*max-Speicher ist.
#  
# maxheap <bytes>

Diese Einstellung hinzuzufügen ist gut,Der Redis-Dienst startet nicht!!!!!!!
Der Standardwert ist: maxheap 10240000000≈976,56M

Ich habe diesen Kommentar nicht in der Conf-Datei gefunden, ich habe etwas wie das hier gefunden:
# Benutze nicht mehr Speicher als die angegebene Anzahl an Bytes.
# Wenn das Speicherlimit erreicht ist, wird Redis versuchen, Schlüssel zu entfernen
# gemäß der gewählten Räumungspolitik (siehe maxmemory-policy).
#
# Wenn Redis die Schlüssel gemäß der Richtlinie nicht entfernen kann, oder wenn die Richtlinie es ist
# auf 'Noeviction' gesetzt, beginnt Redis mit Fehlern auf Befehle zu antworten
# das mehr Speicher verbrauchen würde, wie SET, LPUSH und so weiter, und wird fortgesetzt
#, um auf schreibgeschützte Befehle wie GET zu antworten.
#
# Diese Option ist in der Regel nützlich, wenn Redis als LRU-Cache verwendet wird oder zum Setzen
# Ein hartes Speicherlimit für eine Instanz (unter Verwendung der 'Noeviction'-Politik).
#
# WARNUNG: Wenn du Slaves an eine Instanz mit Maxmemory angeschlossen hast,
# Die Größe der Ausgangspuffer, die zur Versorgung der Slaves benötigt werden, wird abgezogen
# aus der Anzahl des benötigten Speichers, sodass Netzwerkprobleme / Resynchronisationen es tun
# Nicht eine Schleife auslösen, in der die Schlüssel rausgeworfen werden, und im Gegenzug der Ausgang
# Puffer der Sklaven ist voll mit DELs der entfernten Schlüssel, was die Löschung auslöst
# von weiteren Schlüsseln und so weiter, bis die Datenbank vollständig leer ist.
#
# Kurz gesagt... Wenn du Sklaven angehängt hast, wird empfohlen, einen Lower einzustellen
# Limit für Maxmemory, sodass auf dem System etwas freier RAM für den Slave vorhanden ist
# Ausgabepuffer (aber dies ist nicht nötig, wenn die Richtlinie 'Noeviction' lautet).
#
# WARNUNG: Das Nicht Setzen von Maxmemory führt dazu, dass Redis mit einem beendet wird.
# Out-of-Memory-Ausnahme, wenn das Heap-Limit erreicht ist.
#
# HINWEIS: Da Redis die System-Paging-Datei verwendet, um den Heap-Speicher zuzuweisen,
# Der Arbeitsset-Speicherverbrauch, der vom Windows-Task-Manager oder von anderen angezeigt wird
# Tools wie ProcessExplorer sind nicht immer genau. Zum Beispiel rechts
# Nach einem Hintergrundspeicher der RDB- oder AOF-Dateien wird der Arbeitssetwert
# könnte deutlich sinken. Um die korrekte Speichermenge zu überprüfen
# vom Redis-Server, um die Daten zu speichern, verwenden Sie den Befehl INFO-Client. Die INFO
#-Befehl zeigt nur den Speicher an, mit dem die Redis-Daten gespeichert werden, nicht den zusätzlichen Speicher
# Speicher, der vom Windows-Prozess für seine eigenen Anforderungen verwendet wird. Th3 zusätzlicher Betrag
# des Speichers, der nicht vom INFO-Befehl gemeldet wird, kann berechnet werden, indem man die
# Peak Working Set, gemeldet vom Windows-Task-Manager und dem used_memory_peak
# vom INFO-Befehl gemeldet.
#
# maxmemory <bytes>

Warnung: Wenn das Heap-Limit erreicht wird, führt das Nichtsetzen von Maxmemory dazu, dass Redis mit einer Out-of-Memory-Ausnahme endet.

Hinweis: Aufgrund vonRedis verwendet System-Paging-Dateien, um Heap-Speicher zuzuweisen

Der Windows-Task-Manager oder andere Tools wie ProcessExplorer zeigen nicht immer eine genaue Nutzung des Arbeitsspeichers an. Einfach ausgedrückt,Der vom Task-Manager angezeigte Speicherverbrauch ist nicht genau!!!

Verwenden Sie den Info-Befehl, um wie folgt abzufragen:

# Erinnerung
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: Keine Räumung
mem_fragmentation_ratio:1:00
mem_allocator:jemalloc-3.6.0



Die Einstellungen sind wie folgt:

1073741824 Bytes = 1G
Nach der Einstellung fügt der Redis .net-Client einen Cache-Fehler wie folgt hinzu:

OOM-Befehl nicht erlaubt, wenn Speicher > 'maxmemory' verwendet wird.
# MAXMEMORY-RICHTLINIE: Wie Redis auswählt, was beim Maxmemory entfernt wird
# ist erreicht. Sie können aus fünf Verhaltensweisen wählen:
#
# flüchtig-lru -> entferne den Schlüssel mit einer Ablaufmenge mit einem LRU-Algorithmus
# allkeys-lru -> beliebigen Schlüssel gemäß dem LRU-Algorithmus entfernen
# flüchtig-zufällig -> entferne einen zufälligen Schlüssel mit einem Ablaufsatz
# allkeys-random -> entferne einen zufälligen Schlüssel, irgendeinen Schlüssel
# flüchtig-ttl -> entferne den Schlüssel mit der nächstgelegenen Ablaufzeit (kleine TTL)
# Noeviction -> läuft überhaupt nicht ab, sondern gibt nur einen Fehler bei Schreiboperationen zurück
#
# Hinweis: Bei einer der oben genannten Richtlinien gibt Redis beim Schreiben einen Fehler zurück
# Operationen, wenn keine geeigneten Schlüssel für die Räumung vorhanden sind.
#
# Zum Zeitpunkt des Schreibens sind diese Befehle: setnx setex append
# incr decr rpush lpush rpushx lpushx lpushx linsert lset rpoplpush sadd
# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx exec sort
#
# Der Standard lautet:
#
# maxmemory-policy Noeviction
#MAXMEMORY策略: Wenn MAXMEMORY

#到达. Sie können aus fünf Verhaltensweisen wählen:

#

#volatile LRU-> verwendet den LRU-Algorithmus, um Schlüssel mit ablaufenden Mengen zu entfernen

#allkeys löscht LRU-> jeden Schlüssel gemäß dem LRU-Algorithmus

#volatile zufällig – > entferne zufällige Schlüssel mit abgelaufenen Sets

#allkeys zufällige > löschen zufällige Schlüssel, beliebige Schlüssel

#volatile TTL-> Löschen Sie den Schlüssel mit der nächstgelegenen Ablaufzeit (Minor TTL)

#noeviction-> läuft überhaupt nicht ab, sondern gibt nur Schreibfehler zurück

#

#注意: Für jede der oben genannten Strategien gibt Redis beim Schreiben einen Fehler zurück

#操作, wenn kein geeigneter Schlüssel für die Räumung vorhanden ist.

#

#在编写之日 sind diese Befehle: setnx setex append

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

#烧结店sunion sunionstore sdiff sdiffstore zadd zincrby

#zunionstore Zinterstore Hset Hsetnx HMSET Hincrby Incrby Decrby

#getset mset msetnx exec sortierung

#

#默认值为:

#

#maxmemory策略无效
Sie müssen außerdem folgende Konfigurationen einrichten:

Die Standard-Redis-Einstellung ist sehr konservativ, das heißt, sie wird nicht gespeichert, nachdem das Speicherlimit überschritten wurde, und die Richtlinie kann auf den LRU-Algorithmus (den zuletzt am wenigsten verwendeten Algorithmus) geändert werden – die neu gespeicherten Informationen ersetzen die alten.

Rezension:

Redis-Persistenzunterschied zwischen RDB und AOF
https://www.itsvse.com/thread-9555-1-1.html

Die Docker-Installation führt den Redis-Cache aus
https://www.itsvse.com/thread-8995-1-1.html

Beispiele erklären, was Redis-Cache-Durchdringung, Cache-Lawine und Cache-Zerstörung sind
https://www.itsvse.com/thread-8968-1-1.html

Redis-Wildcards zum Löschen von Schlüsseln in großen Mengen
https://www.itsvse.com/thread-7957-1-1.html

CentOS 7 Installation Redis 5.0.3 Tutorial
https://www.itsvse.com/thread-7201-1-1.html

Installiere die Redis-Erweiterung unter PHP 5.5.7 unter CentOS
https://www.itsvse.com/thread-7200-1-1.html

Wie viele Schlüssel können in einer Redis-Instanz gespeichert werden, und was sind die maximalen Schlüssel und Werte?
https://www.itsvse.com/thread-6848-1-1.html

Die Ausgabe des Redis-Chinesischen kann nicht richtig dargestellt werden
https://www.itsvse.com/thread-5032-1-1.html

Redis ermöglicht den Fernzugriff
https://www.itsvse.com/thread-5011-1-1.html

Windows startet den Redis-Dienst nicht, Fehler 1067: Prozess beendet unerwartet.
https://www.itsvse.com/thread-5010-1-1.html

CentOS installierte Redis 4.0.8
https://www.itsvse.com/thread-4614-1-1.html

Redis richtet eine Fernverbindung ein und greift auf Passwörter zu.
https://www.itsvse.com/thread-4101-1-1.html

Redis entleert den Datencache
https://www.itsvse.com/thread-4027-1-1.html

Redis-Persistenzkonfiguration und Off-Persistenz
https://www.itsvse.com/thread-4012-1-1.html

Der Unterschied zwischen Save und BGSAVE in Redis
https://www.itsvse.com/thread-4010-1-1.html

Redis zwei Persistenzmethoden und -prinzipien
https://www.itsvse.com/thread-4009-1-1.html

Redis hat drei Wege zum Einstieg
https://www.itsvse.com/thread-4008-1-1.html

Redis-Methode zum Ausblenden von Kommandozeilenfenstern
https://www.itsvse.com/thread-2988-1-1.html

Redis-Hash-Hash-Wert-Problem
https://www.itsvse.com/thread-2587-1-1.html

5 Dinge, die Sie wissen sollten, bevor Sie Redis verwenden
https://www.itsvse.com/thread-2580-1-1.html

Redis ändert die Standardportnummer und setzt das Zugriffspasswort
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-Bit-Download, offizielle Downloadadresse
https://www.itsvse.com/thread-2576-1-1.html

Redis verwendet Lua-Skripte für detaillierte Erklärungen
https://www.itsvse.com/thread-9634-1-1.html

Redis Benchmark Leistungstest
https://www.itsvse.com/thread-9645-1-1.html

(Ende)






Vorhergehend:NPOI-Beurteilung des Zelldatentyps
Nächster:NPOI Operation Excel Detaillierte Erklärung
 Vermieter| Veröffentlicht am 12.07.2023, 21:08:55 |
Eliminationsstrategien des Redis-Gedächtnisses acht
https://www.itsvse.com/thread-10626-1-1.html
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com