Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 47166|Svar: 1

[Källa] Redis MISCONF Redis är konfigurerad för att spara RDB-snapshots

[Kopiera länk]
Publicerad den 2021-5-14 21:18:50 | | | |
Genom att använda StackExchange.Redis för att manipulera redis-cachen är felet följande:

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.

Tillfällig lösning, modifiera filen redis.windows.conf,Redis-tjänsten behöver återupptas, sätter enligt följande:
Om du inte vill starta om Redis-tjänsten kan du använda kommandot redis-cli för att ställa in det på följande sätt:



Förklaringen är följande:
# Som standard slutar Redis att acceptera skrivningar om RDB-snapshots är aktiverade
# (minst en sparpunkt) och den senaste bakgrundssparningen misslyckades.
# Detta gör användaren medveten (på ett hårt sätt) om att data inte finns kvar
# på skivan ordentligt, annars är chansen stor att ingen märker det och lite till
# katastrof kommer att inträffa.
#
# Om bakgrundssparningsprocessen börjar fungera igen kommer Redis att göra det
# tillåter automatiskt skrivningar igen.
#
# Men om du har satt upp din korrekta övervakning av Redis-servern
# och persistens, kan du vilja inaktivera denna funktion så att Redis gör det
# fortsätt arbeta som vanligt även om det finns problem med disken,
# tillstånd, och så vidare.
Enkelt uttryckt: Redis behöver forka en huvudprocess för att undvika att huvudprocessen fejkar död vid sparning av data på hårddisken, och sedan slutföra processen att spara data till hårddisken i forkprocessen, om huvudprocessen använder 4 GB minne behövs ytterligare 4 GB när fork-delprocessen behövs, då är minnet inte tillräckligt, forken misslyckas och sedan misslyckas även datasparande hårddisken.

För att se redis-loggarna måste du konfigurera redis.windows.conf enligt följande:

# Ange loggfilens namn. Dessutom kan 'stdout' användas för att tvinga fram
# Redis för att logga in på standardutgången.
loggfil "E:/Redis-x64-3.2.100/redis.txt"

Log-undantagen är följande:

[8984] 14 maj 14:05:09.060 * Bakgrundssparning startad av pid 8672
[8672] 14 maj 14:05:09.169 #
Windows-versionen av Redis reserverar heapminne från systemets sidfil.
för delning med den förgrenade processen som används för persistensoperationer. Just nu finns det otillräckligt med sammanhängande ledigt utrymme tillgängligt i
Systemsidningsfil. Du kan öka storleken på systemets sidfil.
Ibland kan en omstart defragmentera systemets sidsökningsfil tillräckligt för att
Denna operation slutfördes framgångsrikt.

Redis kan inte fortsätta. Går ut.
[8984] 14 maj 14:05:09.278 # gaffeloperationen misslyckades



Efter analys visade det sig att problemet med den maximala heapstorleken "maxheap"-konfigurationen berodde på otillräckligt tillgängligt minne.

Lösning

Öppna Redis konfigurationsfil "redis.windows.conf" och hitta följande kodsektion:


# Redis-heapen måste vara större än värdet som anges av maxmemory
# flagga, eftersom heap-allokatorn har sina egna minneskrav och
# Fragmentering av högen är oundviklig. Om bara maxmemory-flaggan är
# specificerat kommer maxheap att sättas till 1,5*maxminne. Om maxheap-flaggan är
# specificeras tillsammans med maxmemory, maxheap-flaggan kommer automatiskt att vara
# ökar om den är mindre än 1,5*maxminne.
#  
# maxheap <bytes>

Att lägga till denna inställning är bra,Redis-tjänsten startar inte!!!!!!!
Standardvärdet är: maxheap 10240000000≈976,56M

Jag hittade inte den här kommentaren i konferensfilen, jag hittade något i stil med detta:
# Använd inte mer minne än det angivna antalet bytes.
# När minnesgränsen är nådd kommer Redis att försöka ta bort nycklar
# enligt den valda vräkningspolicyn (se maxmemory-policy).
#
# Om Redis inte kan ta bort nycklar enligt policyn, eller om policyn är
# inställd på 'noeviction', kommer Redis att börja svara med fel på kommandon
# som skulle använda mer minne, som SET, LPUSH och så vidare, och kommer att fortsätta
# för att svara på skrivskyddade kommandon som GET.
#
# Detta alternativ är vanligtvis användbart när man använder Redis som LRU-cache eller för att sätta
# en hård minnesgräns för en instans (med hjälp av 'noeviction'-policyn).
#
# VARNING: Om du har slavar kopplade till en instans med maxmemory aktiverat,
# storleken på de utgångsbuffertar som behövs för att mata slavarna dras av
# från det använda minnesantalet, så att nätverksproblem / omsynkroniseringar kommer
# inte trigga en loop där nycklar kastas ut, och i sin tur utgången
# buffert av slavar är full av DELs av nycklar som utkastats vilket utlöser raderingen
# av fler nycklar, och så vidare tills databasen är helt tömd.
#
# Kort sagt... Om du har slavar fästa rekommenderas det att du sätter en lägre
# gräns för maxminne så att det finns lite ledigt RAM på systemet för slave
# utmatningsbuffertar (men detta behövs inte om policyn är 'noeviction').
#
# VARNING: om du inte sätter maxmemory kommer Redis att avsluta med en
# undantag utanför minnet om heapgränsen nås.
#
# NOTERA: eftersom Redis använder systemets sidfil för att allokera heapminnet,
# minnesanvändningen i arbetssetet visas av Windows Aktivitetshanteraren eller av andra
# verktyg som ProcessExplorer kommer inte alltid att vara exakta. Till exempel, höger
# efter en bakgrundssparning av RDB- eller AOF-filerna, fungerar arbetsmängdsvärdet
# kan sjunka avsevärt. För att kontrollera rätt mängd minne som används
# av redis-servern för att lagra datan, använd INFO-klientkommandot. INFORMATIONEN
# kommando visar bara minnet som användes för att lagra redis-data, inte det extra
# minne som används av Windows-processen för sina egna behov. Th3 extra mängd
# av minne som inte rapporteras av INFO-kommandot kan beräknas genom att subtrahera
# Peak Working Set rapporteras av Windows Aktivitetshanteraren och used_memory_peak
# rapporterat av INFO-kommandot.
#
# maxminne <bytes>

Varning: Om heapgränsen nås kommer utebliven maxminnesinställning att leda till att Redis avslutas med ett minnesutsläpp.

Not: På grund avRedis använder systemsidfiler för att allokera heapminne

Windows Aktivitetshanteraren eller andra verktyg som ProcessExplorer visar inte alltid korrekt användning av arbetsenhetens minne. Enkelt uttryckt,Minnesanvändningen som visas av Aktivitetshanteraren är inte korrekt!!!

Använd info-kommandot för att fråga enligt följande:

# Minne
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: Ingen vräkning
mem_fragmentation_ratio:1.00
mem_allocator:jemalloc-3.6.0



Inställningarna är följande:

1073741824 byte = 1G
Efter inställningen lägger redis .net-klienten till ett cachefel enligt följande:

OOM-kommandot tillåts inte när minnet används > 'maxmemory'.
# MAXMEMORY POLICY: hur Redis väljer vad som ska tas bort när maxmemory
# är nådd. Du kan välja mellan fem beteenden:
#
# flyktig-lru -> ta bort nyckeln med en förfallsmängd med hjälp av en LRU-algoritm
# allkeys-lru -> ta bort vilken nyckel som helst enligt LRU-algoritmen
# flyktig-slumpmässig -> ta bort en slumpmässig nyckel med en förfallsuppsättning
# allkeys-random -> ta bort en slumpmässig nyckel, vilken nyckel som helst
# volatile-ttl -> ta bort nyckeln med närmaste utgångstid (minor TTL)
# Noeviction -> går inte ut alls, bara ett fel vid skrivoperationer
#
# Notera: med någon av ovanstående policyer kommer Redis att returnera ett felmeddelande vid skrivning
# Operationer, när det inte finns några lämpliga nycklar för vräkning.
#
# Vid skrivdatumet är dessa kommandon: 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
#
# Standarden är:
#
# maxmemory-policy noeviction
#MAXMEMORY策略: När MAXMEMORY

#到达. Du kan välja mellan fem beteenden:

#

#volatile använder LRU-> LRU-algoritmen för att ta bort nycklar med utgångsmängder

#allkeys LRU-> radera vilken nyckel som helst enligt LRU-algoritmen

#volatile slumpmässigt – > tar bort slumpmässiga nycklar med utgångna set

#allkeys slumpmässiga > raderar slumpmässiga nycklar, godtyckliga nycklar

#volatile TTL-> Ta bort nyckeln med närmaste utgångstid (Minor TTL)

#noeviction-> går inte ut alls, utan returnerar endast fel i skrivoperationen

#

#注意: För någon av ovanstående strategier returnerar Redis ett fel vid skrivning

#操作, när det inte finns någon lämplig nyckel för vräkning.

#

#在编写之日 är dessa kommandon: 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 MSetNX exec-sortering

#

#默认值为:

#

#maxmemory策略无效
Du behöver också ställa in följande konfigurationer:

Standardinställningen för redis är mycket konservativ, det vill säga den lagras inte efter att minnesgränsen överskridits, och policyn kan ändras till LRU-algoritmen (den minst använda algoritmen nyligen) – den nyligen lagrade informationen ersätter den gamla informationen.

Recension:

Redis-beständighetsskillnad mellan RDB och AOF
https://www.itsvse.com/thread-9555-1-1.html

Docker-installationen kör Redis-cachen
https://www.itsvse.com/thread-8995-1-1.html

Exempel förklarar vad Redis cachepenetration, cache avalanche och cache breakdown är
https://www.itsvse.com/thread-8968-1-1.html

Redis-jokerkort för att ta bort nycklar i bulk
https://www.itsvse.com/thread-7957-1-1.html

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

Installera redis-tillägget under php 5.5.7 under CentOS
https://www.itsvse.com/thread-7200-1-1.html

Hur många nycklar kan lagras i en redis-instans, och vilka är maxnycklarna och värdena?
https://www.itsvse.com/thread-6848-1-1.html

Utgåvan av redis-kinesiska kan inte visas korrekt
https://www.itsvse.com/thread-5032-1-1.html

Redis möjliggör fjärråtkomst
https://www.itsvse.com/thread-5011-1-1.html

Windows kan inte starta Redis-tjänsten, fel 1067: Processen avslutas oväntat.
https://www.itsvse.com/thread-5010-1-1.html

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

Redis upprättar fjärranslutning och åtkomstlösenord
https://www.itsvse.com/thread-4101-1-1.html

Redis tömmer datacachen
https://www.itsvse.com/thread-4027-1-1.html

Redis-persistenskonfiguration och av-persistens
https://www.itsvse.com/thread-4012-1-1.html

Skillnaden mellan save och bgsave i redis
https://www.itsvse.com/thread-4010-1-1.html

Redis två persistensmetoder och principer
https://www.itsvse.com/thread-4009-1-1.html

Redis har tre sätt att börja på
https://www.itsvse.com/thread-4008-1-1.html

Redis-metoden för att dölja kommandoradsfönster
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash Värde Problem
https://www.itsvse.com/thread-2587-1-1.html

5 saker du måste veta innan du använder Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis ändrar standardportnumret och sätter åtkomstlösenordet
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bitars nedladdning, officiell nedladdningsadress
https://www.itsvse.com/thread-2576-1-1.html

Redis använder Lua-skript för detaljerade förklaringar
https://www.itsvse.com/thread-9634-1-1.html

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

(Slut)






Föregående:NPOI-bedömning av celldatumtyp
Nästa:NPOI Operation Excel Detaljerad Förklaring
 Hyresvärd| Publicerad den 2023-7-12 21:08:55 |
Redis minne åtta elimineringsstrategier
https://www.itsvse.com/thread-10626-1-1.html
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com