架构师_程序员_码农网

K Hae salasana
Rekisteröidy

QQ登录

Vain yksi askel alkuun

Etsi
Näkymiä:26453|Vastauksia: 1
打印 上一主题 下一主题

[Profiili]Redis MISCONF Redis on konfiguroitu tallentamaan RDB-väliaikakuvat

[kopioi linkki]
N 跳转到指定楼层
omistaja
发表于 2021-5-14 21:18:50|只看该作者回帖奖励|Palautaselaus|Lukutila
Redis-välimuistin käyttäminen StackExchange.Redisin avulla antaa seuraavan virheen:

StackExchange.Redis.RedisServerException: MISCONF Redis on konfiguroitu tallentamaan RDB-väliaikakuvia, mutta se ei pysty tällä hetkellä pysymään levyllä. Komennot, jotka voivat muuttaa tietosarjaa, ovat poissa käytöstä. Komennot, jotka voivat muuttaa datajoukkoa, on poistettu käytöstä. Tarkista Redisin lokitiedot virheestä.

Väliaikainen ratkaisu on redis.windows.conf-tiedoston muuttaminen, mikä edellyttää redis-palvelun käynnistämistä uudelleen seuraavilla asetuksilla:
Jos et halua käynnistää redis-palvelua uudelleen, voit asettaa sen redis-cli-komennolla seuraavasti:



Selitys on seuraava:
# Oletusarvoisesti Redis lakkaa hyväksymästä kirjoituksia, jos RDB-väliaikakuvat ovat käytössä.
# (vähintään yksi tallennuspiste) ja viimeisin taustatallennus epäonnistui.
# Tämä tekee käyttäjän tietoiseksi (kovalla tavalla) siitä, että data ei pysy # levyllä kunnolla, muuten on todennäköistä, että sitä ei tallenneta.
# levylle kunnolla, muuten on todennäköistä, että kukaan ei huomaa ja jotkut
# katastrofi tapahtuu.
# Jos taustalla tapahtuva tallennusprosessi käynnistyy
# Jos taustatallennusprosessi alkaa toimia uudelleen Redis tulee
# sallii automaattisesti kirjoitukset uudelleen.
#
# Jos kuitenkin olet asettanut Redis-palvelimen asianmukaisen valvonnan...
# ja pysyvyyden, haluat ehkä poistaa tämän ominaisuuden käytöstä, jotta Redis # jatkaa toimintaansa normaalisti, vaikka levyn kanssa olisi ongelmia.
# jatkaa toimintaansa tavalliseen tapaan, vaikka levyn, # käyttöoikeuksien ja niin edelleen kanssa olisi ongelmia.
# käyttöoikeudet ja niin edelleen.
Yksinkertaisesti sanottuna: kun Redis tallentaa dataa kiintolevylle, sen täytyy haarukoida kopio pääprosessista, jotta pääprosessi ei kuolisi virheellisesti, ja sitten suorittaa datan tallentaminen kiintolevylle loppuun haarukointiprosessin sisällä. Jos pääprosessi käyttää 4 Gt muistia ja haarukointialiprosessi tarvitsee lisää 4 Gt muistia, muisti ei riitä, haarukointi epäonnistuu ja datan tallentaminen kiintolevylle epäonnistuu myös.

Voit tarkastella redis-lokeja määrittämällä redis.windows.conf-tiedoston seuraavasti:

# Määritä lokitiedoston nimi. Myös 'stdout' voidaan käyttää pakottamaan
# Redis kirjaamaan lokit vakiolähdölle.
logfile "E:/Redis-x64-3.2.100/redis.txt"

Lokipoikkeus on seuraava:

[8984] 14. toukokuuta 14:05:09.060 * Taustatallennus aloitettu pid 8672:lla.
[8672] 14 toukokuuta 14:05:09.169 #
Rediksen Windows-versio varaa kasan muistia järjestelmän sivutustiedostosta.
jaettavaksi persistenssioperaatioihin käytettävän haarautuneen prosessin kanssa.Tällä hetkellä ei ole riittävästi yhtenäistä vapaata tilaa käytettävissä
Tällä hetkellä järjestelmän sivutiedostossa ei ole riittävästi yhtenäistä vapaata tilaa. Voit lisätä järjestelmän sivutiedoston kokoa.
Tällä hetkellä järjestelmän sivutiedostossa ei ole riittävästi yhtenäistä vapaata tilaa.
Voit lisätä järjestelmän sivutiedoston kokoa.

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



Analyysin jälkeen osoittautuu, että kyseessä on ongelma maksimi heap-koon "maxheap"-määrityksen kanssa, koska käytettävissä oleva muisti on riittämätön.

Ratkaisu

Avaa Rediksen konfigurointitiedosto "redis.windows.conf" ja etsi seuraava koodiosa:


# Rediksen kasan on oltava suurempi kuin maxmemory-arvossa määritetty arvo.
# lippua, koska heap-allokaattorilla on omat muistivaatimuksensa, ja
# kasan pirstaloituminen on väistämätöntä. Jos vain maxmemory-lippu asetetaan
# määritetty, maxheapin arvoksi asetetaan 1,5*maxmemory. Jos maxheap-lippukirjain on
# määritetty yhdessä maxmemoryn kanssa, maxheap-lippu asetetaan automaattisesti maxheap-lipuksi.
# kasvatetaan automaattisesti, jos se on pienempi kuin 1,5*maxmemory.
#
# maxheap <bytes

Tämän asetuksen kasvattaminen on hyvä, redis-palvelu ei voi käynnistyä !!!!!!!.
Oletusarvo on: maxheap 1024000000≈976.56M.

En etsinyt tätä kommenttia conf-tiedostosta, löysin seuraavan kommentin:
# Älä käytä enemmän muistia kuin määritetty määrä tavuja.
# Älä käytä enemmän muistia kuin määritetty määrä tavuja. # Kun muistiraja saavutetaan, Redis yrittää poistaa avaimet.
# valitun häätökäytännön mukaan (katso maxmemory-policy).
# Jos Redis ei voi poistaa avaimia
# Jos Redis ei pysty poistamaan avaimia politiikan mukaisesti tai jos käytäntö on
# asetettu arvoon 'noeviction', Redis alkaa vastata virheillä komentoihin
# jotka käyttäisivät enemmän muistia, kuten SET, LPUSH ja niin edelleen, ja jatkaa
# vastata vain lukemiseen tarkoitettuihin komentoihin, kuten GET.
#
# Tämä vaihtoehto on yleensä hyödyllinen, kun Redisiä käytetään LRU-välimuistina tai kun halutaan asettaa
# kova muistiraja instanssille (käyttämällä 'noeviction'-käytäntöä).
# Tämä vaihtoehto on yleensä hyödyllinen, kun käytetään Redisiä LRU-välimuistina tai asetetaan # instanssille kova muistiraja (käyttämällä 'noeviction'-käytäntöä).
# VAROITUS: Jos instanssiin on liitetty orjia, joilla on maxmemory päällä, # lähtöpuskurien koko on rajoitettu lähtöpuskurien kokoon.
# orjien ruokkimiseen tarvittavien lähtöpuskureiden koko vähennetään.
# käytetyn muistin määrästä, jotta verkko-ongelmat / uudelleensynkronoinnit tulevat
# eivät aiheuta silmukkaa, jossa avaimet häädetään, ja vuorostaan ulostulo
# orjien puskuri täyttyy häädettyjen avainten DEL-merkinnöistä, mikä käynnistää # uusien avainten poistamisen, ja niin edelleen.
# lisää avaimia, ja niin edelleen, kunnes tietokanta on täysin tyhjä.
#
# Lyhyesti sanottuna... jos sinulla on orjia liitettynä, on suositeltavaa asettaa alhaisempi
# rajan maxmemorylle, jotta järjestelmässä on jonkin verran vapaata RAM-muistia orjia varten.
# ulostulopuskurit (mutta tätä ei tarvita, jos käytäntö on 'noeviction').
# VAROITUS: ei aseta
# VAROITUS: maxmemoryn asettamatta jättäminen aiheuttaa sen, että Redis lopetetaan virheellä
# out-of-memory exception, jos heap-raja saavutetaan.
# #
# HUOMAUTUS: koska Redis käyttää järjestelmän hakemistotiedostoa kasan muistin varaamiseen, # järjestelmän hakemistotiedoston osoittama työjoukon muistin käyttö kasan muistin varaamiseen.
# Windows Task Managerin tai muiden Windows Task Managerin osoittama Working Set -muistin käyttö
# työkalut, kuten ProcessExplorer, eivät aina ole tarkkoja. Esimerkiksi oikealla
# Esimerkiksi heti RDB- tai AOF-tiedostojen taustatallennuksen jälkeen työjoukon arvo
# voi laskea merkittävästi. Jotta voit tarkistaa oikean muistimäärän, joka on käytetty
# redis-palvelimen tietojen tallentamiseen käyttämän muistin, käytä INFO-asiakaskomentoa. INFO-asiakaskomento
# komento näyttää vain redis-datan tallentamiseen käytetyn muistin, ei ylimääräistä muistia.
# muistia, jota Windows-prosessi käyttää omiin tarpeisiinsa. Th3 ylimääräistä # muistimäärää, jota INFO client -komento ei ilmoita.
INFO-komennon ilmoittamatta jättämän muistin # määrä voidaan laskea vähentämällä siitä
# Windows Task Managerin raportoima huipputyömäärä ja used_memory_peak.
#, jonka INFO-komento ilmoittaa.
#
# maxmemory <bytes

Varoitus: Jos maxmemorya ei aseteta, Redis lopettaa toimintansa muistin loppumisesta aiheutuvalla poikkeuksella, jos kasan raja saavutetaan.

Huomautus: Koska Redis käyttää järjestelmän sivutustiedostoa kasan muistin varaamiseen.

Windows Task Managerin tai muiden työkalujen, kuten ProcessExplorerin, näyttämä työmuistin käyttö ei ole aina tarkkaa. Yksinkertaisesti sanottuna Task Managerin näyttämä muistin käyttö ei ole tarkkaa!!!!.

Kysy info-komennolla seuraavaa:

# Muisti
used_memory:2011338768
käytetty_muisti_ihminen:1.87G
used_memory_rss:2011279992
käytetty_muisti_rss_ihminen:1.87G
used_memory_peak:2011338768
käytetty_muistihuippu_ihminen:1.87G
total_system_memory:0
koko_järjestelmän_muisti_ihminen:0B
used_memory_lua:37888
käytetty_muisti_lua_ihminen:37.00K
käytetty_muisti_lua:37888 käytetty_muisti_lua_ihminen:37.00K
käytetty_muisti_lua:37888 käytetty_muisti_lua_ihminen:37.00K maxmemory:0
maxmemory_policy:noeviction
mem_fragmentation_ratio:1.00
mem_allocator:jemalloc-3.6.0



Asetukset ovat seuraavat:

1073741824 tavuja = 1G
Kun tämä on asetettu, redis .net-asiakas lisää uuden välimuistin, joka ilmoittaa seuraavan virheen:

OOM-komento ei ole sallittu, kun käytetty muisti > 'maxmemory'.
# MAXMEMORY POLICY: miten Redis valitsee, mitä poistetaan, kun maxmemory # saavutetaan.
Voit valita viidestä käyttäytymistavasta: # MAXMEMORY POLICY: miten Redis valitsee, mitä poistetaan, kun maxmemory # saavutetaan.
# MAXMEMORY POLICY.
# volatile-lru -> poistaa avaimen, jonka vanhentumisaika on päättynyt LRU-algoritmia käyttäen.
# allkeys-lru -> poistaa minkä tahansa avaimen LRU-algoritmin mukaisesti.
# volatile-random -> poistaa satunnaisen avaimen, jonka vanhenemissarja on vanhentunut.
# allkeys-random -> poistaa satunnaisen avaimen, minkä tahansa avaimen.
# volatile-ttl -> poista avain, jolla on lähin vanhentumisaika (minor TTL).
# noeviction -> ei vanheneta lainkaan, palauttaa vain virheen kirjoitustapahtumissa.
# noeviction -> ei vanhene lainkaan, palauttaa vain virheen kirjoitusoperaatioissa.
# noeviction -> ei vanhentuisi lainkaan, palauta vain virhe kirjoitusoperaatioissa # Huomaa: millä tahansa edellä mainituista käytännöistä Redis palauttaa virheen kirjoitusoperaatioissa.
# operaatioista, kun ei ole sopivia avaimia häädettäväksi.
# Näitä komentoja kirjoitettaessa Redis palauttaa virheen kirjoitusoperaatioissa.
# Kirjoitushetkellä nämä komennot ovat: set setnx setex append append
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby decrby
# getset mset msetnx exec sort
#exec sort
# Oletusarvo on.
#
# maxmemory-policy noeviction
# MAXMEMORY-käytäntö: kun MAXMEMORY

# saapuu. Voit valita viidestä käyttäytymistavasta:

#

#volatile lru-> poista avaimet, joiden sarjat ovat vanhentuneet lru-algoritmia käyttäen.

#allkeys lru->poistaa minkä tahansa avaimen lru-algoritmin mukaisesti.

#volatile random->poistaa satunnaisen avaimen, jonka vanhenemissarja on vanhentunut.

#allkeys random->poistaa satunnaisen avaimen, minkä tahansa avaimen.

#volatile ttl->poistaa avaimen, jonka vanhentumisaika on lähimpänä (minor ttl).

#noeviction->ei vanhene lainkaan, palauttaa vain kirjoitusoperaatiovirheen.

#volatile ttl->poistaa viimeksi vanhentuneen avaimen (minor ttl).

#huomaa: missä tahansa edellä mainituista strategioista Redis palauttaa virheen kirjoitettaessa

# operaatiosta, kun ei ole sopivaa avainta evictionille.

#

# Kirjoitushetkellä nämä komennot ovat: set setnx setnx setex append append

# increment decrement rpush lpushx lpushx linsert lset rpoplpush sadd

#sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby

#zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby hotel

#getset mset msetnx exec sort

#

#Default value:

#

# maxmemory policy is invalid
Myös seuraavat asetukset on asetettava:

Redisin oletusasetukset ovat hyvin konservatiivisia, eli muistia ei tallenneta, kun se ylittyy, käytäntö voidaan muuttaa LRU-algoritmiksi (Least Recently Used Algorithm) - vastatallennettu tieto korvaa vanhan tiedon.

Muistuta:

Redis Persistent RDB:n ja AOF:n välinen ero.
h ttps:// www.itsvse.com/thread-9555-1-1.html

Docker-asennus, jossa on Redis-välimuisti
h ttps:// www.itsvse.com/thread-8995-1-1.html

Esimerkkejä siitä, mitä Redis Cache Penetration, Cache Avalanche ja Cache Knockdown ovat.
h ttps:// www.itsvse.com/thread-8968-1-1.html

redis wildcard batch delete key
h ttps:// www.itsvse.com/thread-7957-1-1.html

Redis 5.0.3 CentOS 7:ssä -opastusohjelma
h ttps:// www.itsvse.com/thread-7201-1-1.html

Redis-laajennuksen asennus php 5.5.7:lle CentOS-käyttöjärjestelmässä.
h ttps:// www.itsvse.com/thread-7200-1-1.html

Kuinka monta avainta voidaan tallentaa yhteen redis-instanssiin ja mikä on avainten ja arvojen maksimimäärä?
h ttps:// www.itsvse.com/thread-6848-1-1.html

Kuinka monta avainta voidaan tallentaa yhteen redis-instanssiin, ja mikä on avainten ja arvojen enimmäismäärä?
h ttps:// www.itsvse.com/thread-5032-1-1.html

Miten redisiä käytetään etäkäyttöön?
h ttps:// www.itsvse.com/thread-5011-1-1.html

Windows ei voi käynnistää Redis-palvelua, virhe 1067: Prosessi päättyi odottamattomasti.
h ttps:// www.itsvse.com/thread-5010-1-1.html

Redis 4.0.8:n asennus centos-tietokoneeseen.
h ttps:// www.itsvse.com/thread-4614-1-1.html

rediksen etäyhteyden ja salasanan asettaminen
h ttps:// www.itsvse.com/thread-4101-1-1.html

redis tyhjentää tietovälimuistin
h ttps:// www.itsvse.com/thread-4027-1-1.html

redisin pysyvyyden konfigurointi ja pysyvyyden poistaminen käytöstä
h ttps:// www.itsvse.com/thread-4012-1-1.html

Tallennuksen ja bgsave:n ero rediksessä
h ttps:// www.itsvse.com/thread-4010-1-1.html

Kaksi persistenssityyppiä rediksessä ja miten ne toimivat.
h ttps:// www.itsvse.com/thread-4009-1-1.html

Kolme tapaa käynnistää Redis
h ttps:// www.itsvse.com/thread-4008-1-1.html

Kuinka piilottaa Redisin komentoriviikkuna
h ttps:// www.itsvse.com/thread-2988-1-1.html

Redis Hash (Hash) Hashin hakuongelmat
h ttps:// www.itsvse.com/thread-2587-1-1.html

5 asiaa, jotka sinun on tiedettävä ennen Redisin käyttöä
h ttps:// www.itsvse.com/thread-2580-1-1.html

Rediksen oletusporttinumeron muuttaminen ja salasanojen asettaminen käyttöön.
h ttps:// www.itsvse.com/thread-2577-1-1.html

Redis windows 64 bit download, virallinen latausosoite.
h ttps:// www.itsvse.com/thread-2576-1-1.html

Redis käyttäen Lua-skriptejä
h ttps:// www.itsvse.com/thread-9634-1-1.html

Redisin vertailuarvo
h ttps:// www.itsvse.com/thread-9645-1-1.html

(Loppu)






Pari: NPOI solun päivämäärän tyyppi tuomio
Seuraava: NPOI toiminta Excel Yksityiskohtaiset
NET/C# käyttää Redisiä BitMapiin perustuvan Bloom-algoritmin toteuttamiseen, ja julkaisee vain käytännössä kohdatut tekniset vaikeudet, jotta muita ei johdettaisi harhaan.
sohva
omistaja|发表于 2023-7-12 21:08:55|只看该作者
Redis muisti kahdeksan eliminointi strategioita
h ttps:// www.itsvse.com/thread-10626-1-1.html
Ainoa asia, jonka aion sanoa, on se, että aion saada pelistä paljon enemmän irti kuin luulin voivani, ja aion tehdä sen.
Sinun täytyy kirjautua sisään ennen kuin voit lähettää viestiä takaisin Kirjaudu sisään | Rekisteröidy

T ämä versio integraalisista säännöistä


VASTUUVAPAUSLAUSEKE: Kaikki Code Farmerin julkaisemat ohjelmistot, ohjelmointimateriaalit tai artikkelit on tarkoitettu käytettäväksi vain oppimis- ja tutkimustarkoituksiin; edellä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muutoin kaikki seuraukset jäävät käyttäjien itsensä kannettaviksi. Tämän sivuston tiedot verkosta, tekijänoikeuskiistalla ei ole mitään tekemistä tämän sivuston kanssa. Sinun on poistettava edellä mainittu sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tuet aitoa ohjelmistoa, osta rekisteröinti ja saat parempaa aitoa palvelua. Jos on olemassa rikkomuksia, ota meihin yhteyttä sähköpostitse, jotta voimme käsitellä sitä.

Sähköposti To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 01:23

Quick ReplyTakaisin alkuunTakaisin luetteloon