|
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 tuomioSeuraava: NPOI toiminta Excel Yksityiskohtaiset
|