Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 47166|Antwoord: 1

[Bron] Redis MISCONF Redis is geconfigureerd om RDB-snapshots op te slaan

[Link kopiëren]
Geplaatst op 14-5-2021 21:18:50 | | | |
Met StackExchange.Redis om de redis-cache te manipuleren, is de fout als volgt:

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.

Tijdelijke oplossing, het bestand redis.windows.conf wijzigen,De dienst van Redis moet opnieuw worden opgestart, als volgt ingesteld:
Als je de Redis-dienst niet wilt herstarten, kun je het redis-cli-commando gebruiken om het als volgt in te stellen:



De uitleg is als volgt:
# Standaard accepteert Redis geen schrijfacties meer als RDB-snapshots zijn ingeschakeld
# (minstens één savepunt) en de laatste achtergrondsave mislukte.
# Dit maakt de gebruiker zich (op een harde manier) bewust dat data niet blijft bestaan
# op schijf op de juiste manier, anders is de kans groot dat niemand het merkt en nog wat
# Rampen zullen gebeuren.
#
# Als het achtergrondopslaan weer begint te werken, zal Redis het doen
# Automatisch opnieuw schrijven toestaan.
#
# Maar als je de Redis-server goed hebt bewaken
# en persistentie, wil je deze functie misschien uitschakelen zodat Redis dat kan doen
# Blijf werken zoals gewoonlijk, ook al zijn er problemen met de schijf,
# Toestemmingen, enzovoort.
Simpel gezegd: Redis moet een hoofdproces forken om te voorkomen dat het hoofdproces doet alsof het overlijden is bij het opslaan van data op de harde schijf, en vervolgens de operatie voltooien om data op de harde schijf op te slaan in het forkproces; als het hoofdproces 4GB geheugen gebruikt, is er nog eens 4GB nodig wanneer het fork-subproces nodig is; op dat moment is het geheugen niet genoeg, faalt de fork, en vervolgens faalt ook de data-opslaande harde schijf.

Om de redis-logs te bekijken, moet je redis.windows.conf als volgt configureren:

# Specificeer de naam van het logbestand. Ook kan 'stdout' worden gebruikt om te forceren
# Redis om in te loggen op de standaarduitvoer.
logbestand "E:/Redis-x64-3.2.100/redis.txt"

De log-uitzonderingen zijn als volgt:

[8984] 14 mei 14:05:09.060 * Achtergrondopslaan gestart door pid 8672
[8672] 14 mei 14:05:09.169 #
De Windows-versie van Redis reserveert heapgeheugen uit het systeempagingbestand
voor delen met het gevorkte proces dat wordt gebruikt voor persistentiebewerkingen. Op dit moment is er onvoldoende aaneengesloten vrije ruimte beschikbaar in de
systeempagina-bestand. Je kunt de grootte van het systeem-pagingbestand vergroten.
Soms zal een herstart het systeempagingbestand voldoende defragmenteren voor
Deze operatie succesvol voltooid.

Redis kan niet doorgaan. Vertrek.
[8984] 14 mei 14:05:09.278 # vorkoperatie mislukt



Na analyse bleek dat het probleem met de maximale heapgrootte "maxheap" configuratie te wijten was aan onvoldoende beschikbaar geheugen.

Oplossing

Open het configuratiebestand van Redis "redis.windows.conf" en vind de volgende codesectie:


# De Redis-heap moet groter zijn dan de waarde die door de maxmemory is gespecificeerd
# vlag, aangezien de heap allocator zijn eigen geheugenvereisten heeft en
# Fragmentatie van de hoop is onvermijdelijk. Als alleen de maxmemory-vlag is
# gespecificeerd, maxheap wordt ingesteld op 1,5*maxmemory. Als de maxheap-vlag is
# gespecificeerd samen met maxmemory, wordt de maxheap-vlag automatisch gespecificeerd
# verhoogd als het kleiner is dan 1,5*maxgeheugen.
#  
# maxheap <bytes>

Het toevoegen van deze instelling is goed,De dienst van Redis start niet!!!!!!!
De standaardwaarde is: maxheap 10240000000≈976,56M

Ik vond deze opmerking niet in het conf-bestand, ik vond iets als dit:
# Gebruik niet meer geheugen dan het aangegeven aantal bytes.
# Wanneer de geheugenlimiet is bereikt, zal Redis proberen sleutels te verwijderen
# volgens het gekozen uitzettingsbeleid (zie maxmemory-policy).
#
# Als Redis volgens het beleid geen sleutels kan verwijderen, of als het beleid wel
# ingesteld op 'noeviction', zal Redis beginnen te antwoorden met fouten op commando's
# die meer geheugen zou gebruiken, zoals SET, LPUSH, enzovoort, en zal doorgaan
# om te reageren op alleen-lezen commando's zoals GET.
#
# Deze optie is meestal handig bij het gebruik van Redis als LRU-cache, of om in te stellen
# een harde geheugenlimiet voor een instantie (gebruikmakend van het 'noeviction'-beleid).
#
# WAARSCHUWING: Als je slaves aan een instantie hebt gekoppeld met maxmemory aan,
# de grootte van de outputbuffers die nodig zijn om de slaven te voeden wordt afgetrokken
# uit het aantal gebruikte geheugens, zodat netwerkproblemen / hersynchronisaties dat wel zullen doen
# niet een lus triggeren waarin toetsen worden uitgezet, en op zijn beurt de output
# buffer van slaven is vol met DEL's van uitgezette sleutels die de verwijdering triggeren
# van meer sleutels, enzovoort totdat de database volledig leeg is.
#
# Kortom... Als je slaven hebt verbonden, wordt aangeraden om een lager in te stellen
# limiet voor maxmemory zodat er wat vrij RAM op het systeem is voor slave
# outputbuffers (maar dit is niet nodig als het beleid 'noeviction' is).
#
# WAARSCHUWING: het niet instellen van maxmemory zorgt ervoor dat Redis eindigt met een
# Out-of-memory uitzondering als de heaplimiet is bereikt.
#
# OPMERKING: aangezien Redis het systeempagingbestand gebruikt om het heapgeheugen toe te wijzen,
# Het geheugengebruik van de werkset wordt weergegeven door de Windows Taakbeheer of door andere
# Tools zoals ProcessExplorer zijn niet altijd accuraat. Bijvoorbeeld, rechts
# na een achtergrondsave van de RDB- of AOF-bestanden, de waarde van de werkset,
# kan aanzienlijk dalen. Om de juiste hoeveelheid gebruikte geheugen te controleren
# door de redis-server om de data op te slaan, gebruik het INFO-clientcommando. De INFO
# opdracht toont alleen het geheugen dat gebruikt is om de redis-data op te slaan, niet het extra
# geheugen dat door het Windows-proces wordt gebruikt voor zijn eigen behoeften. Th3 extra hoeveelheid
# van geheugen dat niet door het INFO-commando wordt gerapporteerd, kan worden berekend door de
# Peak Working Set gerapporteerd door de Windows Taakbeheer en de used_memory_peak
# gerapporteerd door het INFO-commando.
#
# maxmemory <bytes>

Waarschuwing: Als de heaplimiet wordt bereikt, zal het niet instellen van maxmemory ervoor zorgen dat Redis eindigt met een out-of-memory uitzondering.

Opmerking: VanwegeRedis gebruikt systeempagingbestanden om heapgeheugen toe te wijzen

Windows Taakbeheer of andere tools zoals ProcessExplorer tonen niet altijd nauwkeurig gebruik van het werksetgeheugen. In eenvoudige termen,Het geheugengebruik dat door Taakbeheer wordt weergegeven, is niet accuraat!!!

Gebruik het info-commando om als volgt te zoeken:

# Herinnering
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: geen uitzetting
mem_fragmentation_ratio:1.00
mem_allocator:jemalloc-3.6.0



De instellingen zijn als volgt:

1073741824 bytes = 1G
Na de instelling voegt de redis .net-client een cachefout toe als volgt:

OOM-commando niet toegestaan bij geheugengebruik > 'maxmemory'.
# MAXMEMORY BELEID: hoe Redis selecteert wat hij verwijdert wanneer maxmemory
# is bereikt. Je kunt kiezen uit vijf gedragingen:
#
# vluchtig-lru -> verwijder de sleutel met een expire set met een LRU-algoritme
# allkeys-lru -> verwijder elke sleutel volgens het LRU-algoritme
# vluchtig-willekeurig -> verwijder een willekeurige sleutel met een vervalset set
# allkeys-random -> verwijder een willekeurige sleutel, elke sleutel
# vluchtig-ttl -> verwijder de sleutel met de dichtstbijzijnde vervaldatum (kleine TTL)
# noeviction -> verlopen helemaal niet, geven alleen een foutmelding bij schrijfoperaties
#
# Opmerking: met een van bovenstaande beleidsregels geeft Redis een foutmelding bij schrijven
# Operaties, wanneer er geen geschikte sleutels voor uitzetting zijn.
#
# Op de schrijfdatum zijn deze commando's: set 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
#
# De standaard is:
#
# maxmemory-beleid noevictie
#MAXMEMORY策略: Wanneer MAXMEMORY

#到达. Je kunt kiezen uit vijf gedragingen:

#

#volatile gebruikt LRU-> het LRU-algoritme om sleutels met verloopsets te verwijderen

#allkeys LRU-> elke sleutel verwijderen volgens het LRU-algoritme

#volatile willekeurig - > verwijder willekeurige sleutels met verlopen sets

#allkeys willekeurige > willekeurige sleutels verwijderen, willekeurige sleutels

#volatile TTL-> Verwijder de sleutel met de dichtstbijzijnde vervaldatum (Minor TTL)

#noeviction-> verloopt helemaal niet, maar geeft alleen schrijffouten terug

#

#注意: Voor elk van bovenstaande strategieën geeft Redis een foutmelding bij schrijven

#操作, wanneer er geen geschikte sleutel voor uitzetting is.

#

#在编写之日 zijn deze commando's: set 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 uitvoerende sortering

#

#默认值为:

#

#maxmemory策略无效
Je moet ook de volgende configuraties instellen:

De standaard redis-instelling is zeer conservatief, dat wil zeggen, deze wordt niet opgeslagen nadat de geheugenlimiet is overschreden, en het beleid kan worden gewijzigd naar het LRU-algoritme (het minst gebruikte algoritme recentelijk) - de nieuw opgeslagen informatie vervangt de oude informatie.

Recensie:

Redis-persistentieverschil tussen RDB en AOF
https://www.itsvse.com/thread-9555-1-1.html

De Docker-installatie draait de Redis-cache
https://www.itsvse.com/thread-8995-1-1.html

Voorbeelden verklaren wat Redis-cachepenetratie, cachelawine en cache-breakdown zijn
https://www.itsvse.com/thread-8968-1-1.html

Redis wildcards om sleutels in bulk te verwijderen
https://www.itsvse.com/thread-7957-1-1.html

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

Installeer de Redis-extensie onder php 5.5.7 onder CentOS
https://www.itsvse.com/thread-7200-1-1.html

Hoeveel sleutels kunnen in een redis-instantie worden opgeslagen, en wat zijn de maximale sleutels en waarden?
https://www.itsvse.com/thread-6848-1-1.html

De kwestie van redis Chinese kan niet correct worden weergegeven
https://www.itsvse.com/thread-5032-1-1.html

Redis maakt externe toegang mogelijk
https://www.itsvse.com/thread-5011-1-1.html

Windows start de Redis-service niet op, fout 1067: Proces beëindigt onverwacht.
https://www.itsvse.com/thread-5010-1-1.html

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

Redis stelt externe verbinding en toegangswachtwoorden in
https://www.itsvse.com/thread-4101-1-1.html

Redis leegt de datacache
https://www.itsvse.com/thread-4027-1-1.html

Redis-persistentieconfiguratie en uitgeschakelde persistentie
https://www.itsvse.com/thread-4012-1-1.html

Het verschil tussen save en bgsave in redis
https://www.itsvse.com/thread-4010-1-1.html

Redis twee persistentiemethoden en -principes
https://www.itsvse.com/thread-4009-1-1.html

Redis heeft drie manieren om te beginnen
https://www.itsvse.com/thread-4008-1-1.html

Redis-methode om commandoregelvensters te verbergen
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash Waarde Probleem
https://www.itsvse.com/thread-2587-1-1.html

5 dingen die je moet weten voordat je Redis gebruikt
https://www.itsvse.com/thread-2580-1-1.html

Redis wijzigt het standaard poortnummer en stelt het toegangswachtwoord in
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bit download, officieel downloadadres
https://www.itsvse.com/thread-2576-1-1.html

Redis gebruikt Lua-scripts voor gedetailleerde uitleg
https://www.itsvse.com/thread-9634-1-1.html

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

(Einde)






Vorig:NPOI-oordeel over celdatumtype
Volgend:NPOI Operatie Excel Gedetailleerde Uitleg
 Huisbaas| Geplaatst op 2023-7-12 21:08:55 |
Redis geheugen acht eliminatiestrategieën
https://www.itsvse.com/thread-10626-1-1.html
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com