Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 47166|Atsakyti: 1

[Šaltinis] Redis MISCONF Redis sukonfigūruotas išsaugoti RDB momentines nuotraukas

[Kopijuoti nuorodą]
Paskelbta 2021-5-14 21:18:50 | | | |
Naudojant StackExchange.Redis manipuliuoti redis talpykla, klaida yra tokia:

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.

Laikinas sprendimas, pakeiskite failą redis.windows.conf,"Redis" paslaugą reikia paleisti iš naujo, nustatykite taip:
Jei nenorite iš naujo paleisti "Redis" paslaugos, galite naudoti komandą redis-cli ir nustatyti ją taip:



Paaiškinimas yra toks:
# Pagal numatytuosius nustatymus "Redis" nustos priimti rašymus, jei bus įjungtos RDB momentinės nuotraukos
# (bent vienas įrašymo taškas) ir paskutinis fono įrašymas nepavyko.
# Tai leis vartotojui žinoti (sunkiu būdu), kad duomenys nėra išlieka
# diske tinkamai, kitaip yra tikimybė, kad niekas nepastebės ir kai kurie
# nelaimė įvyks.
#
# Jei fono išsaugojimo procesas vėl pradės veikti, Redis
# automatiškai leisti rašyti dar kartą.
#
# Tačiau, jei nustatėte tinkamą "Redis" serverio stebėjimą
# ir atkaklumas, galbūt norėsite išjungti šią funkciją, kad Redis
# toliau dirbti kaip įprasta, net jei kyla problemų su disku,
# leidimai ir pan.
Paprasčiau tariant: "Redis" turi išsišakoti pagrindinį procesą, kad išsaugojant duomenis į standųjį diską pagrindinis procesas nesuklastotų mirties, o tada užbaigti duomenų išsaugojimo į standųjį diską operaciją išsišakojimo procese, jei pagrindinis procesas naudoja 4 GB atminties, reikia papildomų 4 GB, kai reikalingas šakės antrinis procesas, šiuo metu atminties nepakanka, šakutė sugenda, o tada sugenda ir duomenų taupymo kietasis diskas.

Norėdami peržiūrėti redis žurnalus, turite sukonfigūruoti redis.windows.conf taip:

# Nurodykite žurnalo failo pavadinimą. Taip pat "stdout" gali būti naudojamas priversti
# Redis prisijungti prie standartinės išvesties.
žurnalo failas "E:/Redis-x64-3.2.100/redis.txt"

Žurnalo išimtys yra šios:

[8984] 14 May 14:05:09.060 * Fono įrašymą pradėjo pid 8672
[8672] 14 gegužės 14:05:09.169 #
"Redis" "Windows" versija rezervuoja krūvos atmintį iš sistemos puslapių failo
bendrinimui su išsišakotu procesu, naudojamu patvarumo operacijoms. Šiuo metu nėra pakankamai laisvos vietos
Sistemos puslapių failas. Galite padidinti sistemos puslapių failo dydį.
Kartais paleidus iš naujo sistemos puslapių failas bus defragmentuotas pakankamai, kad
Ši operacija sėkmingai baigta.

Redis negali tęsti. Išeina.
[8984] 14 gegužės 14:05:09.278 # šakės operacija nepavyko



Po analizės paaiškėjo, kad maksimalaus krūvos dydžio "maxheap" konfigūracijos problema kilo dėl nepakankamos laisvos atminties.

Sprendimas

Atidarykite "Redis" konfigūracijos failą "redis.windows.conf" ir raskite šį kodo skyrių:


# Redis krūva turi būti didesnė už maxmemory nurodytą reikšmę
# vėliavėlė, nes krūvos skirstytuvas turi savo atminties reikalavimus ir
# krūvos fragmentacija yra neišvengiama. Jei tik "maxmemory" vėliavėlė yra
# nurodyta, maxheap bus nustatytas 1.5*maxmemory. Jei maksimumo žyma yra
# nurodyta kartu su maxmemory, maxheap vėliavėlė bus automatiškai
# padidėjo, jei jis mažesnis nei 1,5*maxmemory.
#  
# maxheap <bytes>

Pridėti šį nustatymą yra gerai,Nepavyksta paleisti "Redis" paslaugos!!!!!!!
Numatytoji vertė yra: maxheap 1024000000≈976.56M

Neradau šio komentaro conf faile, radau kažką panašaus:
# Nenaudokite daugiau atminties nei nurodytas baitų kiekis.
# Kai atminties limitas bus pasiektas, Redis bandys pašalinti raktus
# pagal pasirinktą iškeldinimo politiką (žr. maxmemory-policy).
#
# Jei Redis negali pašalinti raktų pagal politiką arba jei politika yra
# nustatyta į "noeviction", Redis pradės atsakyti su klaidomis į komandas
#, kuris sunaudotų daugiau atminties, pvz., SET, LPUSH ir pan., ir tęs
#, kad atsakytumėte į tik skaitomas komandas, pvz., GET.
#
# Ši parinktis paprastai naudinga naudojant Redis kaip LRU talpyklą arba
# kietosios atminties limitas egzemplioriui (naudojant "noeviction" politiką).
#
# ĮSPĖJIMAS: Jei turite vergų, prijungtų prie egzemplioriaus su įjungta maxmemory,
# išvesties buferių, reikalingų pavaldiniams maitinti, dydis atimamas
# iš naudojamos atminties skaičiaus, kad tinklo problemos / pakartotinis sinchronizavimas
# nesuaktyvinti kilpos, kur raktai yra iškeldinti, ir savo ruožtu išvesties
# buferis vergų yra pilnas su DELs raktų iškeldinti suaktyvinti ištrynimą
# daugiau raktų ir taip toliau, kol duomenų bazė bus visiškai ištuštinta.
#
# Trumpai tariant... Jei turite pridedamų vergų, siūloma nustatyti mažesnį
# maksimalios atminties riba, kad sistemoje būtų šiek tiek laisvos RAM vergui
# išvesties buferiai (bet tai nereikalinga, jei politika yra "neiškeldinimas").
#
# ĮSPĖJIMAS: nenustačius maxmemory, Redis nutrauks
# atminties trūkumo išimtis, jei pasiekiamas krūvos limitas.
#
# PASTABA: kadangi "Redis" naudoja sistemos ieškos failą krūvos atminčiai paskirstyti,
# Darbo rinkinio atminties naudojimas, kurį rodo "Windows" užduočių tvarkyklė arba kiti
# įrankiai, tokie kaip "ProcessExplorer", ne visada bus tikslūs. Pavyzdžiui, teisė
# po foninio RDB arba AOF failų išsaugojimo, darbinio rinkinio reikšmė
# gali žymiai sumažėti. Norėdami patikrinti tinkamą naudojamos atminties kiekį
# redis-server duomenims saugoti, naudokite INFO kliento komandą. INFORMACIJA
# komanda rodo tik atmintį, naudojamą redis duomenims saugoti, o ne papildomą
# atmintis, kurią "Windows" procesas naudoja savo poreikiams. Th3 papildoma suma
# atminties, kurios nepraneša INFO komanda, galima apskaičiuoti atėmus
# Didžiausias darbo rinkinys, apie kurį pranešė "Windows" užduočių tvarkyklė ir used_memory_peak
# praneša INFO komanda.
#
# maksimali atmintis <bytes>

Įspėjimas: Jei krūvos limitas pasiekiamas, nenustačius maksimalios atminties, Redis bus nutrauktas su atminties trūkumo išimtimi.

Pastaba: Dėl"Redis" naudoja sistemos puslapių failus, kad paskirstytų krūvos atmintį

"Windows" užduočių tvarkyklė ar kiti įrankiai, pvz., "ProcessExplorer", ne visada rodo tikslų darbo rinkinio atminties naudojimą. Paprastai tariant,Užduočių tvarkyklės rodomas atminties naudojimas nėra tikslus!!!

Naudokite komandą info, kad užklaustumėte taip:

# Atmintis
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:iškeldinimas
mem_fragmentation_ratio:1.00
mem_allocator:jemalloc-3.6.0



Nustatymai yra tokie:

1073741824 baitai = 1G
Po nustatymo redis .net klientas prideda talpyklos klaidą taip:

OOM komanda neleidžiama, kai naudojama atmintis > "maxmemory".
# MAXMEMORY POLICY: kaip Redis pasirinks, ką pašalinti, kai maxmemory
# pasiekta. Galite pasirinkti vieną iš penkių elgesio būdų:
#
# volatile-lru -> pašalinkite raktą su galiojimo pabaigos nustatymu naudodami LRU algoritmą
# allkeys-lru -> pašalinti bet kurį raktą pagal LRU algoritmą
# nepastovus-atsitiktinis -> pašalinti atsitiktinį raktą su galiojimo pabaigos rinkiniu
# allkeys-random -> pašalinti atsitiktinį raktą, bet kokį raktą
# volatile-ttl -> nuimkite raktą su artimiausiu galiojimo laiku (nedidelis TTL)
# noeviction -> visai nesibaigia, tiesiog grąžinkite rašymo operacijų klaidą
#
# Pastaba: naudojant bet kurią iš aukščiau pateiktų politikų, "Redis" rašydama pateiks klaidą
# operacijos, kai nėra tinkamų raktų iškeldinimui.
#
# Rašymo dieną šios komandos yra: nustatyti setnx setex pridėti
# incr decr rpush rpush lpush rpushx linsert lset rpoplpush sadd
# Sinterstore Sunion Sunionstore Sdiff Sdiffstore Zadd Zincrby
# Zunionstore ZinterStore HSET HSETNX HMSET Hincrby Incrby Decrby
# getset mset msetnx exec sort
#
# Numatytasis yra:
#
# maxmemory-policy noeviction
#MAXMEMORY策略: Kai MAXMEMORY

#到达. Galite rinktis iš penkių toliau nurodytų elgesio būdų.

#

#volatile LRU-> naudoja LRU algoritmą, kad pašalintų raktus su galiojimo pabaigos rinkiniais

#allkeys LRU-> ištrinti bet kokį raktą pagal LRU algoritmą

#volatile atsitiktinis - > pašalinti atsitiktinius raktus su pasibaigusiais rinkiniais

#allkeys atsitiktinių > ištrinti atsitiktinius raktus, savavališkus raktus

#volatile TTL-> Ištrinkite raktą su artimiausiu galiojimo laiku (nedidelis TTL)

#noeviction-> visai nesibaigia, tik grąžina rašymo operacijos klaidas

#

#注意: Bet kuriai iš aukščiau pateiktų strategijų "Redis" pateikia klaidą rašant

#操作, kai nėra tinkamo rakto iškeldinimui.

#

#在编写之日, šios komandos yra: nustatyti setnx setex pridėti

#递增递减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 sorting

#

#默认值为:

#

#maxmemory策略无效
Taip pat turite nustatyti šias konfigūracijas:

Numatytasis redis nustatymas yra labai konservatyvus, tai yra, jis nesaugomas viršijus atminties limitą, o politiką galima pakeisti į LRU algoritmą (pastaruoju metu mažiausiai naudojamą algoritmą) - naujai saugoma informacija pakeis seną informaciją.

Peržiūra:

Redis patvarumo skirtumas tarp RDB ir AOF
https://www.itsvse.com/thread-9555-1-1.html

"Docker" diegimas paleidžia "Redis" talpyklą
https://www.itsvse.com/thread-8995-1-1.html

Pavyzdžiai paaiškina, kas yra "Redis" talpyklos įsiskverbimas, talpyklos lavina ir talpyklos suskirstymas
https://www.itsvse.com/thread-8968-1-1.html

Redis pakaitos simboliai, kad būtų galima masiškai ištrinti raktus
https://www.itsvse.com/thread-7957-1-1.html

"CentOS 7" diegimo "Redis 5.0.3" pamoka
https://www.itsvse.com/thread-7201-1-1.html

Įdiekite redis plėtinį pagal php 5.5.7 pagal CentOS
https://www.itsvse.com/thread-7200-1-1.html

Kiek raktų galima saugoti redis egzemplioriuje ir kokie yra maksimalūs raktai bei reikšmės?
https://www.itsvse.com/thread-6848-1-1.html

Redis kinų kalbos klausimas negali būti tinkamai rodomas
https://www.itsvse.com/thread-5032-1-1.html

Redis įgalina nuotolinę prieigą
https://www.itsvse.com/thread-5011-1-1.html

"Windows" nepavyksta paleisti "Redis" paslaugos, klaida 1067: procesas netikėtai nutraukiamas.
https://www.itsvse.com/thread-5010-1-1.html

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

Redis nustato nuotolinį ryšį ir prieigos slaptažodžius
https://www.itsvse.com/thread-4101-1-1.html

Redis ištuština duomenų talpyklą
https://www.itsvse.com/thread-4027-1-1.html

Redis patvarumo konfigūracija ir išjungimo patvarumo konfigūracija
https://www.itsvse.com/thread-4012-1-1.html

Skirtumas tarp išsaugoti ir bgsave in redis
https://www.itsvse.com/thread-4010-1-1.html

Redis du patvarumo metodai ir principai
https://www.itsvse.com/thread-4009-1-1.html

Redis turi tris būdus pradėti
https://www.itsvse.com/thread-4008-1-1.html

Redis komandų eilutės langų slėpimo metodas
https://www.itsvse.com/thread-2988-1-1.html

Redis Hash Hash Hash vertės problema
https://www.itsvse.com/thread-2587-1-1.html

5 dalykai, kuriuos turite žinoti prieš naudodami Redis
https://www.itsvse.com/thread-2580-1-1.html

Redis pakeičia numatytąjį prievado numerį ir nustato prieigos slaptažodį
https://www.itsvse.com/thread-2577-1-1.html

Redis Windows 64 bitų atsisiuntimas, oficialus atsisiuntimo adresas
https://www.itsvse.com/thread-2576-1-1.html

Redis naudoja Lua scenarijus išsamiems paaiškinimams
https://www.itsvse.com/thread-9634-1-1.html

"Redis Benchmark" našumo testas
https://www.itsvse.com/thread-9645-1-1.html

(Pabaiga)






Ankstesnis:NPOI sprendimas dėl langelio datos tipo
Kitą:NPOI operacija "Excel" išsamus paaiškinimas
 Savininkas| Publikuota: 2023-7-12 21:08:55 |
Redis atminties aštuonios eliminavimo strategijos
https://www.itsvse.com/thread-10626-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com