Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 47166|Svar: 1

[Kilde] Redis MISCONF Redis er konfigureret til at gemme RDB-snapshots

[Kopier link]
Opslået den 14-5-2021 kl. 21:18:50 | | | |
Ved brug af StackExchange.Redis til at manipulere redis-cachen er fejlen 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, modificerer filen redis.windows.conf,Redis-tjenesten skal genoptages, sat som følger:
Hvis du ikke vil genstarte Redis-tjenesten, kan du bruge redis-cli-kommandoen til at sætte den op som følger:



Forklaringen er som følger:
# Som standard vil Redis stoppe med at acceptere skrivninger, hvis RDB-snapshots er aktiveret
# (mindst ét gemmepunkt) og den seneste baggrundslagring fejlede.
# Dette vil gøre brugeren opmærksom (på en hård måde), at data ikke bevares
# på disk ordentligt, ellers er chancerne for, at ingen vil opdage det og lidt til
# katastrofe vil ske.
#
# Hvis baggrundsgemningen begynder at virke igen, vil Redis
# tillad automatisk skrivning igen.
#
# Men hvis du har sat din korrekte overvågning af Redis-serveren op
# og vedholdenhed, du vil måske deaktivere denne funktion, så Redis kan gøre det
# fortsæt med at arbejde som normalt, selvom der er problemer med disken,
# tilladelser og så videre.
Kort sagt: Redis skal forke en hovedproces for at undgå, at hovedprocessen foregiver død, når data gemmes på harddisken, og derefter fuldføre processen med at gemme data på harddisken i fork-processen; hvis hovedprocessen bruger 4 GB hukommelse, kræves yderligere 4 GB, når fork-underprocessen er nødvendig, på dette tidspunkt er hukommelsen ikke nok, forken fejler, og derefter fejler datalagringsharddisken også.

For at se redis-logfilerne skal du konfigurere redis.windows.conf som følger:

# Angiv logfilens navn. Også 'stdout' kan bruges til at tvinge
# Redis for at logge på standardoutputtet.
logfil "E:/Redis-x64-3.2.100/redis.txt"

Log-undtagelserne er som følger:

[8984] 14. maj 14:05:09.060 * Baggrundsgemning startet af pid 8672
[8672] 14. maj 14:05:09.169 #
Windows-versionen af Redis reserverer heap-hukommelse fra systemets pagingfil
til deling med den forgrenede proces, der bruges til persistensoperationer. På nuværende tidspunkt er der ikke tilstrækkelig sammenhængende fri plads tilgængelig i
Systemsidefil. Du kan øge størrelsen på systemets pagingfil.
Nogle gange vil en genstart defragmentere systemets pagingfil tilstrækkeligt til at
Denne operation skal gennemføres med succes.

Redis kan ikke fortsætte. Ud.
[8984] 14. maj 14:05:09.278 # gaffeloperationen mislykkedes



Efter analyse viste det sig, at problemet med den maksimale heap-størrelse "maxheap"-konfiguration skyldtes utilstrækkelig tilgængelig hukommelse.

Opløsning

Åbn Redis' konfigurationsfil "redis.windows.conf" og find følgende kodeafsnit:


# Redis-heapen skal være større end den værdi, der er angivet af maxmemory
# flag, da heap-allokatoren har sine egne hukommelseskrav og
# Fragmentering af bunken er uundgåelig. Hvis kun maxmemory-flaget er
# specificeret, maxheap vil være sat til 1,5*maxmemory. Hvis maxheap-flaget er
# specificeret sammen med maxmemory, vil maxheap-flaget automatisk blive angivet
# forhøjet, hvis den er mindre end 1,5*maxmemory.
#  
# maxheap <bytes>

At tilføje denne indstilling er godt,Redis-tjenesten starter ikke!!!!!!!
Standardværdien er: maxheap 10240000000≈976,56M

Jeg fandt ikke denne kommentar i konferencefilen, jeg fandt noget i stil med dette:
# Brug ikke mere hukommelse end det angivne antal bytes.
# Når hukommelsesgrænsen nås, vil Redis forsøge at fjerne nøgler
# ifølge den valgte udsættelsespolitik (se maxmemory-policy).
#
# Hvis Redis ikke kan fjerne nøgler i henhold til politikken, eller hvis politikken er
# sat til 'noeviction', vil Redis begynde at svare med fejl på kommandoer
# der ville bruge mere hukommelse, som SET, LPUSH og så videre, og vil fortsætte
# for at svare på skrivebeskyttede kommandoer som GET.
#
# Denne mulighed er som regel nyttig, når man bruger Redis som en LRU-cache eller til at sætte
# En hård hukommelsesgrænse for en instans (ved brug af 'noeviction'-politikken).
#
# ADVARSEL: Hvis du har slaver tilknyttet en instans med maxmemory slået til,
# Størrelsen af de outputbuffere, der er nødvendige for at forsyne slaverne, trækkes fra
# fra brugte hukommelsesmængder, så netværksproblemer / resynkroniseringer vil
# ikke udløse en løkke, hvor nøgler bliver smidt ud, og dermed outputtet
# buffer af slaver er fyldt med DEL'er for nøgler, der er blevet fjernet, hvilket udløser sletningen
# af flere nøgler, og så videre, indtil databasen er helt tømt.
#
# Kort sagt... Hvis du har slaver tilknyttet, anbefales det, at du sætter en lavere
# begrænsning for maxmemory, så der er noget ledig RAM på systemet til slave
# outputbuffere (men dette er ikke nødvendigt, hvis politikken er 'noeviction').
#
# ADVARSEL: hvis du ikke sætter maxmemory, vil Redis afslutte med en
# ud-af-hukommelsen undtagelse, hvis heap-grænsen nås.
#
# BEMÆRK: da Redis bruger systemets pagingfil til at allokere heap-hukommelsen,
# arbejdssættets hukommelsesforbrug vist af Windows Jobliste eller andre
# værktøjer som ProcessExplorer vil ikke altid være nøjagtige. For eksempel, højre
# efter en baggrundsgemning af RDB- eller AOF-filerne, arbejdsmængdens værdi
# kan falde markant. For at kontrollere den korrekte mængde hukommelse, der bruges.
# ved redis-serveren til at gemme dataene, brug INFO-klientkommandoen. The INFO
#-kommandoen viser kun den hukommelse, der bruges til at gemme redis-dataene, ikke den ekstra
# hukommelse, som Windows-processen bruger til sine egne behov. Th3 ekstra beløb
# af hukommelse, der ikke rapporteres af INFO-kommandoen, kan beregnes ved at trække fra
# Peak Working Set rapporteret af Windows Jobliste og used_memory_peak
# rapporteret af INFO-kommandoen.
#
# maxmemory <bytes>

Advarsel: Hvis heap-grænsen nås, vil manglende indstilling af maxmemory få Redis til at afslutte med en out-of-memory-undtagelse.

Bemærk: På grund afRedis bruger systemsidefiler til at allokere heap-hukommelse

Windows Jobliste eller andre værktøjer som ProcessExplorer viser ikke altid nøjagtig brug af arbejdsmængdehukommelsen. Enkelt sagt,Det hukommelsesforbrug, der vises af Joblisten, er ikke nøjagtigt!!!

Brug info-kommandoen til at forespørge som følger:

# Hukommelse
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 udsættelse
mem_fragmentation_ratio:1.00
mem_allocator:jemalloc-3.6.0



Indstillingerne er som følger:

1073741824 bytes = 1G
Efter indstillingen tilføjer redis .net-klienten en cache-fejl som følger:

OOM-kommandoen er ikke tilladt, når den bruges hukommelse > 'maxmemory'.
# MAXMEMORY POLITIK: hvordan Redis vælger, hvad der skal fjernes, når maxmemory
# er nået. Du kan vælge mellem fem adfærdsmønstre:
#
# flygtig-lru -> fjerner nøglen med udløbssæt ved hjælp af en LRU-algoritme
# allkeys-lru -> fjerner enhver nøgle ifølge LRU-algoritmen
# flygtig-tilfældig -> fjerner en tilfældig nøgle med et udløbssæt
# allkeys-random -> fjerner en tilfældig nøgle, hvilken som helst nøgle
# flygtig-ttl -> fjern nøglen med nærmeste udløbstid (mindre TTL)
# noeviction -> udløber slet ikke, returnerer bare en fejl ved skriveoperationer
#
# Bemærk: med nogen af ovenstående politikker vil Redis returnere en fejl ved skrivning
# Operationer, når der ikke findes egnede nøgler til udsættelse.
#
# På skrivetidspunktet er disse kommandoer: sæt setnx setex tilføj
# 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-politik noevition
#MAXMEMORY策略: Når MAXMEMORY

#到达. Du kan vælge mellem fem adfærdsmønstre:

#

#volatile bruger LRU-> LRU-algoritmen til at fjerne nøgler med udløbsmængder

#allkeys LRU-> slette enhver nøgle ifølge LRU-algoritmen

#volatile tilfældigt - > fjerner tilfældige nøgler med udløbne sæt

#allkeys tilfældige > sletter tilfældige nøgler, vilkårlige nøgler

#volatile TTL-> Slet nøglen med nærmeste udløbstid (Minor TTL)

#noeviction-> udløber slet ikke, returnerer kun fejl i skriveoperationer

#

#注意: For en af ovenstående strategier returnerer Redis en fejl ved skrivning

#操作, når der ikke findes en passende nøgle til udsættelse.

#

#在编写之日 er disse kommandoer: 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 executive sortering

#

#默认值为:

#

#maxmemory策略无效
Du skal også sætte følgende konfigurationer op:

Standard Redis-indstillingen er meget konservativ, det vil sige, den gemmes ikke efter hukommelsesgrænsen er overskredet, og politikken kan ændres til LRU-algoritmen (den mindst brugte algoritme for nylig) – den nyligt lagrede information vil erstatte den gamle information.

Anmeldelse:

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

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

Eksempler forklarer, hvad Redis cache-penetration, cache-lavine og cache-breakdown er
https://www.itsvse.com/thread-8968-1-1.html

Redis-jokere til at slette nøgler i bulk
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

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

Hvor mange nøgler kan gemmes i en redis-instans, og hvad er de maksimale nøgler og værdier?
https://www.itsvse.com/thread-6848-1-1.html

Udgivelsen af redis-kinesisk kan ikke vises korrekt
https://www.itsvse.com/thread-5032-1-1.html

Redis muliggør fjernadgang
https://www.itsvse.com/thread-5011-1-1.html

Windows kan ikke starte Redis-tjenesten, fejl 1067: Processen afsluttes uventet.
https://www.itsvse.com/thread-5010-1-1.html

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

Redis opretter fjernforbindelse og adgangsadgangskoder
https://www.itsvse.com/thread-4101-1-1.html

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

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

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

Der er to persistensmetoder og principper
https://www.itsvse.com/thread-4009-1-1.html

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

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

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

5 ting du skal vide, før du bruger Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis ændrer standardportnummeret og sætter adgangskoden
https://www.itsvse.com/thread-2577-1-1.html

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

Redis bruger Lua-skrifter til detaljerede forklaringer
https://www.itsvse.com/thread-9634-1-1.html

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

(Slut)






Tidligere:NPOI-vurdering af celledatotype
Næste:NPOI Operation Excel Detaljeret Forklaring
 Udlejer| Opslået den 2023-7-12 kl. 21:08:55 |
Redis memory otte eliminationsstrategier
https://www.itsvse.com/thread-10626-1-1.html
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com