Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 47166|Vastaus: 1

[Lähde] Redis MISCONF Redis on konfiguroitu tallentamaan RDB-snapshotit

[Kopioi linkki]
Julkaistu 2021-5-14 21:18:50 | | | |
StackExchange.Redis -työkalua redis-välimuistin käsittelyyn virhe on seuraava:

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.

Väliaikainen ratkaisu, muokkaa redis.windows.conf-tiedostoa,Redis-palvelu täytyy käynnistää uudelleen, asetetaan seuraavasti:
Jos et halua käynnistää Redis-palvelua uudelleen, voit käyttää redis-cli-komentoa asettaaksesi sen seuraavasti:



Selitys on seuraava:
# Oletuksena Redis lopettaa kirjoitusten vastaanottamisen, jos RDB-snapshotit ovat käytössä
# (vähintään yksi tallennuspiste) ja viimeisin taustatallennus epäonnistui.
# Tämä tekee käyttäjän tietoiseksi (vaikealla tavalla), että data ei säily
# levyllä oikein, muuten on todennäköistä, ettei kukaan huomaa ja jotkut
# katastrofi tapahtuu.
#
# Jos taustatallennusprosessi alkaa taas toimia, Redis alkaa toimia
# Salli automaattisesti kirjoitukset uudelleen.
#
# Kuitenkin, jos olet ottanut käyttöön kunnon valvonnan Redis-palvelimelle
# ja sinnikkyyttä, saatat haluta poistaa tämän ominaisuuden käytöstä, jotta Redis
# jatkaa normaalisti työskentelyä, vaikka levyssä olisi ongelmia,
# luvat ja niin edelleen.
Yksinkertaisesti sanottuna: Redis tarvitsee haarautua pääprosessista, jotta pääprosessi ei teeskentelisi kuolemaa tallentaessaan dataa kiintolevylle, ja sitten suorittaa datan tallennus kiintolevylle haarautumisprosessissa. Jos pääprosessi käyttää 4GB muistia, tarvitaan 4GB lisämuistia, kun fork-aliprosessi on tarpeen, mutta tällöin muisti ei riitä, haarukka epäonnistuu ja sitten myös datan tallennuskiintolevy epäonnistuu.

Jotta voit nähdä redis-lokit, sinun täytyy konfiguroida redis.windows.conf seuraavasti:

# Määritä lokitiedoston nimi. Myös 'stdout' voidaan käyttää pakottamiseen.
# Redis kirjautuu vakiolähtöön.
lokitiedosto "E:/Redis-x64-3.2.100/redis.txt"

Lokipoikkeukset ovat seuraavat:

[8984] 14. toukokuuta 14:05:09.060 * Taustatallennus aloitti pid 8672
[8672] 14. toukokuuta 14:05:09.169 #
Redisin Windows-versio varaa kasamuistia järjestelmän sivutustiedostolta
jaettavaksi haarautuneen prosessin kanssa, jota käytetään pysyvyysoperaatioissa. Tällä hetkellä alueella ei ole riittävästi yhtenäistä vapaata tilaa
Järjestelmän sivutustiedosto. Voit kasvattaa järjestelmän sivutustiedoston kokoa.
Joskus uudelleenkäynnistys hajottaa järjestelmän sivutiedoston riittävästi
tämä operaatio saatiin onnistuneesti päätökseen.

Redis ei voi jatkaa. Poistumassa.
[8984] 14. toukokuuta 14:05:09.278 # haarukkaoperaatio epäonnistui



Analyysin jälkeen kävi ilmi, että ongelma maksimikokoisessa "maxheap"-konfiguraatiossa johtui riittämättömästä muistista.

Ratkaisu

Avaa Redisin konfiguraatiotiedosto "redis.windows.conf" ja löydä seuraava koodiosio:


# Redis-keon on oltava suurempi kuin maxmemoryn määrittämä arvo
# lippu, koska heap-allokaattorilla on omat muistitarpeensa ja
# Kasan pirstoutuminen on väistämätöntä. Jos vain maxmemory-lippu on
# määritelty, maxheap asetetaan arvoon 1.5*maxmemory. Jos maxheap-lippu on
# määritellään maxmemoryn kanssa maxheap-lippu automaattisesti
# kasvaa, jos se on alle 1,5*maxmemory.
#  
# Maxheap <bytes>

Tämän asetuksen lisääminen on hyvä,Redis-palvelu ei käynnisty!!!!!!!
Oletusarvo on: maxheap 1024000000≈976.56M

En löytänyt tätä kommenttia conf-tiedostosta, löysin jotain tällaista:
# Älä käytä enempää muistia kuin määritelty määrä tavuja.
# Kun muistiraja saavutetaan, Redis yrittää poistaa avaimia
# valitun häätöpolitiikan mukaan (katso maxmemory-politiikka).
#
# Jos Redis ei voi poistaa avaimia politiikan mukaan, vai jos käytäntö on
# asetettuna 'noeviction', Redis alkaa vastata virheillä komentoihin
# joka vaatisi enemmän muistia, kuten SET, LPUSH ja niin edelleen, ja jatkaa
# vastatakseen vain luku -komentoihin, kuten GET.
#
# Tämä vaihtoehto on yleensä hyödyllinen, kun käytetään Redisiä LRU-välimuistina tai asetetaan
# kova muistiraja instanssille (käyttäen 'noeviction'-politiikkaa).
#
# VAROITUS: Jos sinulla on orjia kiinnitettynä instanssiin, jossa maxmemory on päällä,
# orjien syöttämiseen tarvittavien ulostulopuskurien koko vähennetään
# käytetystä muistimäärästä, jotta verkko-ongelmat / uudelleensynkronoinnit
# ei laukaise silmukkaa, jossa avaimet häädetään, ja samalla ulostulo
# slave-puskuri on täynnä DEL-avainten häätöjä, mikä laukaisee poiston
# lisää avaimia, ja niin edelleen, kunnes tietokanta on täysin tyhjä.
#
# Lyhyesti... Jos sinulla on orjia kiinni, suositellaan asettamaan matalamman
# rajoitus maksimimuistille, jotta järjestelmässä on jonkin verran vapaata RAM-muistia orjaa varten
# ulostulopuskurit (mutta tätä ei tarvita, jos käytäntö on 'noeviction').
#
# VAROITUS: maxmemoryn asettamatta jättäminen aiheuttaa Redisin lopettamisen
# muistin ulkopuolelle jäävä poikkeus, jos keoraja saavutetaan.
#
# HUOM: koska Redis käyttää järjestelmän sivutustiedostoa kasamuistin varaamiseen,
# Työjoukon muistin käyttö, joka näkyy Windowsin tehtävienhallinnassa tai muussa
# työkalut kuten ProcessExplorer eivät aina ole tarkkoja. Esimerkiksi, oikea
# taustatallennuksen jälkeen RDB- tai AOF-tiedostoista työjoukon arvo
# voi laskea merkittävästi. Jotta voidaan tarkistaa oikea käytetty muistimäärä
# redis-palvelimella datan tallentamiseksi käytä INFO-asiakaskomentoa. The INFO
# komento näyttää vain muistin, jota käytetään redis-datan tallentamiseen, ei ylimääräistä
# muisti, jota Windows-prosessi käyttää omiin tarpeisiinsa. Th3 ylimääräinen määrä
# muistia, jota INFO-komento ei raportoi, voidaan laskea vähentämällä
# Huipputoimintasarja raportoitu Windowsin tehtävienhallinnassa ja used_memory_peak
# raportoitu INFO-komennon toimesta.
#
# Maxmemory <bytes>

Varoitus: Jos kekoraja saavutetaan, maxmemoryn asettamatta jättäminen aiheuttaa Redisin päättymisen ulkomuistin poikkeuksella.

Huomautus: KoskaRedis käyttää järjestelmän sivutustiedostoja kasamuistin varaamiseen

Windowsin tehtävienhallinta tai muut työkalut kuten ProcessExplorer eivät aina näytä tarkkaa työsetin muistinkäyttöä. Yksinkertaisesti sanottuna,Tehtävienhallinnan osoittama muistinkäyttö ei ole tarkka!!!

Käytä info-komentoa kyselyyn seuraavasti:

# Muisto
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:häätö
mem_fragmentation_ratio:1.00
mem_allocator:jemalloc-3.6.0



Ympäristöt ovat seuraavat:

1073741824 tavut = 1G
Asetuksen jälkeen redis .net -asiakasohjelma lisää välimuistivirheen seuraavasti:

OOM-komento ei sallittu, kun käytetään muistia > 'maxmemory'.
# MAXMEMORY-POLITIIKKA: miten Redis valitsee, mitä poistaa, kun maxmemory
# saavutetaan. Voit valita viiden käyttäytymisen joukosta:
#
# volatile-lru -> poista avain vanhentumisjoukolla LRU-algoritmilla
# allkeys-lru -> poista minkä tahansa avaimen LRU-algoritmin mukaisesti
# volatile-random -> poista satunnainen avain, jossa on vanhentumisasetus
# allkeys-random -> poista satunnainen avain, mikä tahansa avain
# volatile-ttl -> poista avain, jonka vanhenemisaika on lähin (pieni TTL)
# häätö -> ei vanhene lainkaan, palauta vain virhe kirjoitusoperaatioissa
#
# Huom: millä tahansa yllä mainituista käytännöistä Redis palauttaa virheen kirjoituksessa
# operaatioita, kun häätöavaimia ei ole.
#
# Kirjoitushetkellä nämä komennot ovat: set setnx setex append
# incr decr rpush lpush lpushx lpushx linserti lset rpoplpush sadd
# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
# getset mset msetnx exec lajittelu
#
# Oletus on:
#
# maxmemory-politiikan häätö
#MAXMEMORY策略: Kun MAXMEMORY

#到达. Voit valita viidestä käyttäytymisestä:

#

#volatile LRU-> käyttää LRU-algoritmia avainten poistamiseen, joilla on vanhentuneet asetukset

#allkeys LRU-> poistaa minkä tahansa avaimen LRU-algoritmin mukaisesti

#volatile satunnainen – > poista satunnaiset avaimet, joilla on vanhentuneet sarjat

#allkeys satunnaisia > poista satunnaiset avaimet, satunnaiset avaimet

#volatile TTL-> Poista avain, jonka viimeinen käyttöpäivä on lähin (pieni TTL)

#noeviction-> ei vanhene lainkaan, vaan palauttaa vain kirjoitusvirheitä

#

#注意: Millä tahansa yllä mainituista strategioista Redis palauttaa virheen kirjoituksessa

#操作, kun häätöavainta ei ole.

#

#在编写之日 nämä komennot ovat: 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-lajittelu

#

#默认值为:

#

#maxmemory策略无效
Sinun täytyy myös asettaa seuraavat asetukset:

Oletusredis-asetus on hyvin varovainen, eli sitä ei tallenneta muistirajan ylittämisen jälkeen, ja käytäntö voidaan muuttaa LRU-algoritmiin (viime aikoina vähiten käytetty algoritmi) – uusi tallennettu tieto korvaa vanhat tiedot.

Arvostelu:

Redis Persistenssin ero RDB:n ja AOF:n välillä
https://www.itsvse.com/thread-9555-1-1.html

Docker-asennus pyörittää Redis-välimuistia
https://www.itsvse.com/thread-8995-1-1.html

Esimerkit selittävät, mitä Redis cache penetration, cache avalanche ja cache breakdown ovat
https://www.itsvse.com/thread-8968-1-1.html

Redis Wildcardit avainten suuriin määriin poistamiseen
https://www.itsvse.com/thread-7957-1-1.html

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

Asenna Redis-laajennus PHP 5.5.7 -versiolle CentOS:lle
https://www.itsvse.com/thread-7200-1-1.html

Kuinka monta avainta redis-instanssiin voidaan tallentaa, ja mitkä ovat maksimiavaimet ja arvot?
https://www.itsvse.com/thread-6848-1-1.html

Redis Chinese -numeroa ei voida näyttää oikein
https://www.itsvse.com/thread-5032-1-1.html

Redis mahdollistaa etäyhteyden
https://www.itsvse.com/thread-5011-1-1.html

Windows ei käynnistä Redis-palvelua, virhe 1067: Prosessi päättyy yllättäen.
https://www.itsvse.com/thread-5010-1-1.html

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

Redis asettaa etäyhteyden ja pääsysalasanat
https://www.itsvse.com/thread-4101-1-1.html

Redis tyhjentää datavälimuistin
https://www.itsvse.com/thread-4027-1-1.html

Redis persistenssikonfiguraatio ja pois päältä persistenssi
https://www.itsvse.com/thread-4012-1-1.html

Ero tallennuksen ja bgsave:n välillä Redisissä
https://www.itsvse.com/thread-4010-1-1.html

Redisin kaksi pysyvyysmenetelmää ja periaatetta
https://www.itsvse.com/thread-4009-1-1.html

Redisilla on kolme tapaa aloittaa
https://www.itsvse.com/thread-4008-1-1.html

Redis-menetelmä komentoriviikkunoiden piilottamiseen
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash Value -ongelma
https://www.itsvse.com/thread-2587-1-1.html

5 asiaa, jotka sinun tulee tietää ennen Redisin käyttöä
https://www.itsvse.com/thread-2580-1-1.html

Redis muuttaa oletusporttinumeron ja asettaa pääsysalasanan
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64-bittinen lataus, virallinen latausosoite
https://www.itsvse.com/thread-2576-1-1.html

Redis käyttää Lua-skriptejä yksityiskohtaisiin selityksiin
https://www.itsvse.com/thread-9634-1-1.html

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

(Loppu)






Edellinen:NPOI-arvio solun päivämäärätyypistä
Seuraava:NPOI Operation Excel Yksityiskohtainen selitys
 Vuokraisäntä| Julkaistu 2023-7-12 21:08:55 |
Redis muisti kahdeksan eliminointistrategiaa
https://www.itsvse.com/thread-10626-1-1.html
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com