Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 47166|Svare: 1

[Kilde] Redis MISCONF Redis er konfigurert til å lagre RDB-snapshots

[Kopier lenke]
Publisert 14.05.2021 kl. 21:18:50 | | | |
Ved å bruke StackExchange.Redis for å manipulere redis-cachen, er feilen som følger:

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.

Midlertidig løsning, endre filen redis.windows.conf,Redis-tjenesten må gjenopptas, satt som følger:
Hvis du ikke vil starte Redis-tjenesten på nytt, kan du bruke redis-cli-kommandoen for å sette den opp slik:



Forklaringen er som følger:
# Som standard vil Redis slutte å akseptere skrivinger hvis RDB-snapshots er aktivert
# (minst ett lagringspunkt) og den siste bakgrunnslagringen feilet.
# Dette vil gjøre brukeren oppmerksom (på en hard måte) på at data ikke lagres
# på disk riktig, ellers er sjansen stor for at ingen legger merke til det og litt til
# katastrofe vil skje.
#
# Hvis bakgrunnslagringen begynner å fungere igjen, vil Redis gjøre det
# tillater automatisk skriving igjen.
#
# Men hvis du har satt opp riktig overvåking av Redis-serveren
# og persistens, kan det være lurt å deaktivere denne funksjonen slik at Redis gjør det
# fortsetter å jobbe som vanlig selv om det er problemer med disken,
# tillatelser, og så videre.
Enkelt sagt: Redis må forke en hovedprosess for å unngå at hovedprosessen later som den dør når data lagres på harddisken, og deretter fullføre operasjonen med å lagre data på harddisken i fork-prosessen. Hvis hovedprosessen bruker 4 GB minne, trengs ytterligere 4 GB når fork-underprosessen trengs, på dette tidspunktet er minnet ikke nok, forken feiler, og deretter feiler også datalagringsharddisken.

For å se redis-loggene må du konfigurere redis.windows.conf som følger:

# Spesifiser navnet på loggfilen. Også 'stdout' kan brukes til å tvinge
# Redis for å logge på standardutgangen.
loggfil "E:/Redis-x64-3.2.100/redis.txt"

Log-unntakene er som følger:

[8984] 14. mai 14:05:09.060 * Bakgrunnslagring startet av pid 8672
[8672] 14. mai 14:05:09.169 #
Windows-versjonen av Redis reserverer heap-minne fra systemets pagingfil
for deling med den forgrenede prosessen som brukes for persistensoperasjoner. For øyeblikket er det ikke tilstrekkelig sammenhengende ledig plass tilgjengelig i
systemsidefil. Du kan øke størrelsen på systemets sidesidefil.
Noen ganger vil en omstart defragmentere systemets pagingfil tilstrekkelig til at
Denne operasjonen ble fullført med suksess.

Redis kan ikke fortsette. Avslutter.
[8984] 14. mai 14:05:09.278 # gaffeloperasjon mislyktes



Etter analyse viste det seg at problemet med maksimal heap-størrelse "maxheap"-konfigurasjon skyldtes utilstrekkelig tilgjengelig minne.

Løsning

Åpne Redis sin konfigurasjonsfil "redis.windows.conf" og finn følgende kodeseksjon:


# Redis-heapen må være større enn verdien spesifisert av maxmemory
# flagg, siden heap-allokatoren har sine egne minnekrav og
# Fragmentering av haugen er uunngåelig. Hvis bare maxmemory-flagget er
# spesifisert, Maxheap vil være satt til 1,5*Maxmemory. Hvis maxheap-flagget er
# spesifisert sammen med maxmemory, vil maxheap-flagget automatisk være
# økt hvis den er mindre enn 1,5*maks minne.
#  
# maxheap <bytes>

Å legge til denne innstillingen er bra,Redis-tjenesten klarer ikke å starte!!!!!!!
Standardverdien er: maxheap 10240000000≈976,56M

Jeg fant ikke denne kommentaren i konferansefilen, jeg fant noe som dette:
# Ikke bruk mer minne enn det angitte antallet bytes.
# Når minnegrensen er nådd, vil Redis prøve å fjerne nøkler
# i henhold til den valgte utkastelsespolicyen (se maxmemory-policy).
#
# Hvis Redis ikke kan fjerne nøkler i henhold til retningslinjene, eller hvis retningslinjene er
# satt til 'noeviction', vil Redis begynne å svare med feil på kommandoer
# som vil bruke mer minne, som SET, LPUSH, og så videre, og vil fortsette
# for å svare på skrivebeskyttede kommandoer som GET.
#
# Dette alternativet er vanligvis nyttig når man bruker Redis som LRU-cache, eller for å sette
# En hard minnegrense for en instans (ved bruk av 'noeviction'-policyen).
#
# ADVARSEL: Hvis du har slaver koblet til en instans med maxmemory på,
# Størrelsen på utgangsbufferne som trengs for å forsyne slavene trekkes fra
# fra antall brukt minne, slik at nettverksproblemer / resynkroniseringer vil
# ikke utløse en løkke der nøkler kastes ut, og dermed utgangen
# bufferen av slaver er full av DEL-er for nøkler som blir kastet ut, noe som utløser slettingen
# av flere nøkler, og så videre til databasen er helt tom.
#
# Kort sagt... Hvis du har slaver tilknyttet, anbefales det at du setter en lavere
# grense for maksminne slik at det er litt ledig RAM på systemet for slave
# utgangsbuffere (men dette er ikke nødvendig hvis policyen er 'noeviction').
#
# ADVARSEL: å ikke sette maxmemory vil føre til at Redis terminerer med en
# ut-av-minne-unntak hvis heap-grensen nås.
#
# MERK: siden Redis bruker systemets pagingfil for å allokere heap-minnet,
# arbeidssettets minnebruk vises av Windows Oppgavebehandling eller andre
# verktøy som ProcessExplorer vil ikke alltid være nøyaktige. For eksempel, høyre
# etter en bakgrunnslagring av RDB- eller AOF-filene, fungerer arbeidssettverdien
# kan falle betydelig. For å sjekke riktig mengde minne brukt
# ved redis-serveren for å lagre dataene, bruk INFO-klientkommandoen. The INFO
#-kommandoen viser bare minnet som brukes til å lagre redis-dataene, ikke det ekstra
# minne brukt av Windows-prosessen til sine egne behov. Th3 ekstra beløp
# av minne som ikke rapporteres av INFO-kommandoen kan beregnes ved å trekke fra
# Peak Working Set rapportert av Windows Oppgavebehandling og used_memory_peak
# rapportert av INFO-kommandoen.
#
# Maxmemory <bytes>

Advarsel: Hvis heap-grensen nås, vil manglende innstilling av maxmemory føre til at Redis avsluttes med et unntak utenfor minnet.

Merk: På grunn avRedis bruker system-pagingfiler for å tildele heapminne

Windows Oppgavebehandling eller andre verktøy som ProcessExplorer viser ikke alltid nøyaktig bruk av arbeidsminnet. Enkelt sagt,Minnebruken som vises i Oppgavebehandling er ikke nøyaktig!!!

Bruk info-kommandoen for å spørre som følger:

# 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 utkastelse
mem_fragmentation_ratio:1.00
mem_allocator:jemalloc-3.6.0



Innstillingene er som følger:

1073741824 bytes = 1G
Etter innstillingen legger redis .net-klienten til en cache-feil som følger:

OOM-kommandoen er ikke tillatt når minne brukes > 'maxmemory'.
# MAXMEMORY-POLICY: hvordan Redis velger hva som skal fjernes når maxmemory
# er nådd. Du kan velge mellom fem atferder:
#
# volatile-lru -> fjern nøkkelen med et utløpssett ved hjelp av en LRU-algoritme
# allkeys-lru -> fjerner hvilken som helst nøkkel i henhold til LRU-algoritmen
# flyktig-tilfeldig -> fjerner en tilfeldig nøkkel med et utløpssett.
# allkeys-random -> fjerner en tilfeldig nøkkel, hvilken som helst nøkkel
# volatile-ttl -> fjerner nøkkelen med nærmeste utløpstid (minor TTL)
# noeviction -> utløper ikke i det hele tatt, bare returnerer en feil ved skriveoperasjoner
#
# Merk: med noen av de ovennevnte retningslinjene vil Redis returnere en feil ved skriving
# operasjoner, når det ikke finnes egnede nøkler for utkastelse.
#
# På skrivetidspunktet er disse kommandoene: sett setnx setex legg til
# 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 er:
#
# Maxmemory-policy noevisjon
#MAXMEMORY策略: Når MAXMEMORY

#到达. Du kan velge mellom fem atferder:

#

#volatile bruker LRU-> LRU-algoritmen for å fjerne nøkler med utløpssett

#allkeys LRU-> slette hvilken som helst nøkkel i henhold til LRU-algoritmen

#volatile tilfeldig – > fjerne tilfeldige nøkler med utløpte sett

#allkeys tilfeldig > slette tilfeldige nøkler, vilkårlige nøkler

#volatile TTL-> Slett nøkkelen med nærmeste utløpstid (Minor TTL)

#noeviction-> utløper ikke i det hele tatt, returnerer bare skriveoperasjonsfeil

#

#注意: For noen av de ovennevnte strategiene returnerer Redis en feil ved skriving

#操作, når det ikke finnes en egnet nøkkel for utkastelse.

#

#在编写之日 er disse kommandoene: 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 Exec Sortering

#

#默认值为:

#

#maxmemory策略无效
Du må også sette opp følgende konfigurasjoner:

Standard Redis-innstillingen er svært konservativ, det vil si at den ikke lagres etter at minnegrensen er overskredet, og policyen kan endres til LRU-algoritmen (den minst brukte algoritmen nylig) – den nylig lagrede informasjonen vil erstatte den gamle.

Anmeldelse:

Redis-persistensforskjell mellom RDB og AOF
https://www.itsvse.com/thread-9555-1-1.html

Docker-installasjonen kjører Redis-cachen
https://www.itsvse.com/thread-8995-1-1.html

Eksempler forklarer hva Redis cache-penetrasjon, cache-lavine og cache-nedbrytning er
https://www.itsvse.com/thread-8968-1-1.html

REDIS-jokere for å slette nøkler i bulk
https://www.itsvse.com/thread-7957-1-1.html

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

Installer Redis-utvidelsen under php 5.5.7 under CentOS
https://www.itsvse.com/thread-7200-1-1.html

Hvor mange nøkler kan lagres i en redis-instans, og hva er maks antall nøkler og verdier?
https://www.itsvse.com/thread-6848-1-1.html

Utgaven av redis-kinesisk kan ikke vises riktig
https://www.itsvse.com/thread-5032-1-1.html

Redis muliggjør fjernaksess
https://www.itsvse.com/thread-5011-1-1.html

Windows klarer ikke å starte Redis-tjenesten, feil 1067: Prosessen avsluttes uventet.
https://www.itsvse.com/thread-5010-1-1.html

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

Redis setter opp fjerntilkobling og tilgangspassord
https://www.itsvse.com/thread-4101-1-1.html

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

Redis-persistenskonfigurasjon og off-persistens
https://www.itsvse.com/thread-4012-1-1.html

Forskjellen mellom save og bgsave i redis
https://www.itsvse.com/thread-4010-1-1.html

Redis to persistensmetoder og prinsipper
https://www.itsvse.com/thread-4009-1-1.html

Redis har tre måter å starte på
https://www.itsvse.com/thread-4008-1-1.html

Redis-metoden for å skjule kommandolinjevinduer
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash Verdi-problem
https://www.itsvse.com/thread-2587-1-1.html

5 ting du må vite før du bruker Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis endrer standard portnummer og setter tilgangspassordet
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bits nedlasting, offisiell nedlastingsadresse
https://www.itsvse.com/thread-2576-1-1.html

Redis bruker Lua-skript for detaljerte forklaringer
https://www.itsvse.com/thread-9634-1-1.html

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

(Slutt)






Foregående:NPOI-vurdering av celledatotype
Neste:NPOI Operation Excel Detaljert Forklaring
 Vert| Publisert 2023-07-12 21:08:55 |
Redis minne åtte elimineringsstrategier
https://www.itsvse.com/thread-10626-1-1.html
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com