Az Azure Cache for Redis adatvesztéssel járó hibáinak elhárítása

Ez a cikk azt ismerteti, hogyan diagnosztizálható az Azure Cache for Redisben esetlegesen előforduló tényleges és vélelmezett adatvesztés.

Megjegyzés

Az útmutató számos hibaelhárítási lépése tartalmazza a Redis-parancsok futtatására és a különböző teljesítménymetrikák monitorozására vonatkozó utasításokat. További információkért és útmutatásért tekintse meg a További információk szakaszban található cikkeket.

Kulcsok részleges elvesztése

Az Azure Cache for Redis nem töröl véletlenszerűen kulcsokat a memóriába történő mentésüket követően. Eltávolítja azonban a kulcsokat a lejárati szabályzatoknak és a kiürítési szabályzatoknak megfelelően, illetve az explicit kulcstörlési parancsok esetén. Ezeket a parancsokat a konzolon vagy a parancssori felületen futtathatja.

Előfordulhat, hogy a prémium vagy standard szintű Azure Cache for Redis-példány elsődleges csomópontjára írt kulcsok szintén nem érhetők el azonnal a replikán. Az adatok replikálása az elsődleges csomópontról a replikára aszinkron és nem blokkoló módon történik.

Ha azt tapasztalja, hogy a kulcsok eltűntek a gyorsítótárból, ellenőrizze az alábbi lehetséges okokat:

Ok Description
Kulcs lejárata A kulcsokat a rendszer eltávolítja a kulcsokra vonatkozóan beállított időtúllépések miatt.
Kulcs kizárása A kulcsokat a rendszer eltávolítja a memóriára háruló terhelés miatt.
Kulcs törlése A kulcsokat a rendszer eltávolítja explicit törlési parancsok miatt.
Aszinkron replikáció A kulcsok nem érhetők el a replikán az adatreplikáció késése miatt.

Kulcs lejárata

Azure Cache for Redis automatikusan eltávolít egy kulcsot, ha a kulcshoz időtúllépés van rendelve, és ez az időszak lejárt. A Redis-kulcs lejáratával kapcsolatos további információkért tekintse meg a EXPIRE parancs dokumentációját. Az időtúllépési értékek a SET, a SETEX, a GETSET és más *STORE parancsokkal is beállíthatók.

Ha statisztikát szeretne kapni arról, hogy hány kulcs járt le, használja az INFO parancsot. A Stats szakasz a lejárt kulcsok teljes számát mutatja. A Keyspace szakasz további információt nyújt az időtúllépéssel rendelkező kulcsok számáról és az átlagos időtúllépési értékről.


# Stats

expired_keys:46583

# Keyspace

db0:keys=3450,expires=2,avg_ttl=91861015336

A gyorsítótár diagnosztikai metrikáit is megvizsgálva megállapíthatja, hogy van-e korreláció a kulcs eltűnése és a lejárt kulcsok kiugrása között. Az értesítések használatával keyspace vagy MONITOR az ilyen típusú problémák hibakeresésével kapcsolatos információkért tekintse meg a Redis Keyspace-hibák hibakeresésének függelékét.

Kulcs kizárása

Azure Cache for Redis memóriaterületet igényel az adatok tárolásához. Kiüríti a kulcsokat, hogy szükség esetén szabadítson fel szabad memóriát. Amikor az INFO parancs used_memory vagy used_memory_rss értékei megközelítik a konfigurált maxmemory beállítást, Azure Cache for Redis a gyorsítótárszabályzat alapján elkezdi kiüríteni a kulcsokat a memóriából.

A kiürített kulcsok számát az INFO paranccsal figyelheti:

# Stats

evicted_keys:13224

A gyorsítótár diagnosztikai metrikáit is megvizsgálva megállapíthatja, hogy van-e korreláció a kulcs eltűnése és a kiürített kulcsok kiugrása között. Az ilyen típusú problémák hibakereséséről a Redis Kulcstérhibák hibakeresésének függelékében talál további információt a kulcstérértesítések vagy a MONITOR használatával kapcsolatban.

Kulcs törlése

A Redis-ügyfelek kiadhatják a DEL vagy a HDEL parancsot, hogy explicit módon eltávolítsák a kulcsokat Azure Cache for Redis. A törlési műveletek számát az INFO paranccsal követheti nyomon. Ha a DEL - vagy HDEL-parancsokat meghívták, azok a Commandstats szakaszban lesznek felsorolva.

# Commandstats

cmdstat_del:calls=2,usec=90,usec_per_call=45.00

cmdstat_hdel:calls=1,usec=47,usec_per_call=47.00

Aszinkron replikáció

A Standard vagy a Prémium szinten lévő Azure Cache for Redis példányok elsődleges csomóponttal és legalább egy replikával vannak konfigurálva. Az adatok egy háttérfolyamat használatával aszinkron módon lesznek átmásolva az elsődlegesről egy replikára. A redis.io webhely ismerteti a Redis-adatreplikálás általános működését. Olyan esetekben, amikor az ügyfelek gyakran írnak a Redisbe, részleges adatvesztés történhet, mert a replikáció nem garantáltan azonnali. Ha például az elsődleges lemegy, miután egy ügyfél megír egy kulcsot, de mielőtt a háttérfolyamat elküldené a kulcsot a replikának, a kulcs elveszik, amikor a replika új elsődlegesként veszi át a kulcsot.

A kulcsok nagy részének vagy mindegyikének elvesztése

Ha a kulcsok nagy része vagy mindegyike eltűnt a gyorsítótárból, ellenőrizze az alábbi lehetséges okokat:

Ok Description
Kulcs kiürítése A kulcsokat manuálisan véglegesen törölték.
Helytelen adatbázis-kijelölés Az Azure Cache for Redis egy nem alapértelmezett adatbázis használatára lett beállítva.
Redis-példány hibája A Redis-kiszolgáló nem érhető el.

Kulcs kiürítése

Az ügyfelek meghívhatják a FLUSHDB parancsot egy adatbázis összes kulcsának eltávolításához, vagy a FLUSHALL parancsot, hogy az összes kulcsot eltávolítsák a Redis-gyorsítótár összes adatbázisából. Annak megállapításához, hogy a kulcsok kiürítve lettek-e, használja az INFO parancsot. A Commandstats szakasz azt mutatja be, hogy a rendszer meghívta-e valamelyik FLUSH parancsot:

# Commandstats

cmdstat_flushall:calls=2,usec=112,usec_per_call=56.00

cmdstat_flushdb:calls=1,usec=110,usec_per_call=52.00

Helytelen adatbázis-kijelölés

Azure Cache for Redis alapértelmezés szerint az adatbázist db0 használja. Ha átvált egy másik adatbázisra (például db1), és megpróbál leolvasni belőle kulcsokat, Azure Cache for Redis ott nem találja őket. Minden adatbázis egy logikailag különálló egység, és eltérő adathalmazt tartalmaz. A SELECT paranccsal használhat más elérhető adatbázist, és kereshet bennük kulcsokat.

Redis-példány hibája

A Redis egy memórián belüli adattár. Az adatok tárolása a Redis-gyorsítótárt futtató fizikai és virtuális gépeken történik. Az alapszintű Azure Cache for Redis-példányok csak egyetlen virtuális gépet (VM-et) futtatnak. Ha ez a VM nem működik, a gyorsítótárban tárolt összes adat elveszik.

A standard és a prémium szintű gyorsítótárak sokkal nagyobb rugalmasságot biztosítanak az adatvesztéssel szemben, ha két virtuális gépet használnak egy replikált konfigurációban. Ha egy ilyen gyorsítótár elsődleges csomópontja meghibásodik, a replikacsomópont automatikusan átveszi az adatok kiszolgálását. Ezek a VM-ek különálló tartományokban találhatók a hibák és frissítések miatt, ami minimalizálja annak esélyét, hogy mindkettő egyszerre elérhetetlenné váljon. Ha azonban jelentős adatközpont-kimaradás történik, előfordulhat, hogy a VM-ek egyszerre állnak le. Az adatok elvesznek az ilyen ritka esetekben.

Fontolja meg a Redis-adatmegőrzés és a georeplikáció használatát az adatok ezen infrastruktúrahibák elleni védelmének javításához.

További információ

Ezek a cikkek további információt nyújtanak az adatvesztés elkerüléséről: