Skip to main content

Kafka hibaelhárítás és üzemeltetés

Ezt az útmutatót előkészített backend/KafkaTester-környezethez használd. Olvasd el a beállításokat és előfeltételeket, mielőtt hitelesítő adatokat vagy topológiát módosítasz. A diagnózis során őrizd meg a topicadatokat, a partíció-hozzárendeléseket és a consumer offseteket.

1. Natív ABI-eltérés​

Az ERR_DLOPEN_FAILED vagy a NODE_MODULE_VERSION ... üzenet általában azt jelenti, hogy egy natív modult más Node-főverzióra építettek. A backend Node 22 vagy újabb verziót igényel. Ugyanazzal a kiválasztott verzióval telepítsd és futtasd.

A backend mappájából telepítsd újra a megbízható lockfile-lal, vagy építsd újra a natív függőségeket:

pnpm install --trust-lockfile
pnpm kafka:rebuild-native

Az install script újraépíti a Kafka natív függőségeit, és megkísérli a better-sqlite3 újraépítését. Ne másold át egy másik Node-verzió node_modules mappáját.

2. Corepack-aláírási hiba​

A Cannot find matching keyid hibánál vizsgáld meg a telepített Corepack/pnpm beállítást. A tároló a pnpm 10.27.0 verziót rögzíti. Ha a telepített Corepack támogatja ezt az utat:

corepack enable
corepack prepare pnpm@10.27.0 --activate
pnpm -v

Ezután ismételd meg a függőségek install lépését. A külön telepített, rögzített verziójú pnpm másik támogatott csomagkezelő-út. Ne másold át más fejlesztő abszolút binárisának útvonalát.

3. A service elindul, de nem dolgoz fel eseményt​

Ellenőrizd a kiválasztott környezetet, az alkalmazási és admin szerepeket, a KafkaTopics topicneveket, a consumer groupot és a partíció-hozzárendelési naplókat. Minden hirdetett broker-endpointot el kell érni, nem csak a bootstrap portot. Az egyesített runtime a gyökér beállításokat olvassa. Az önálló workerek saját belépési pont konfigurációt használnak.

4. Az outbox nem publikál​

Ellenőrizd az OutboxEvent.status értékét, a dispatcher naplóit és a producer hibáit. Felosztott gyakorlatnál győződj meg róla, hogy a pnpm kafka:kt:outbox:watch fut.

A PREQUEUED állapot explicit kiadást igényel. A PENDING állapot dispatchert igényel. A DISPATCHING állapotban a publikálás visszaigazolására vagy helyreállításra lehet várni. A stale recovery a broker állapotát ellenőrzi, mielőtt visszasorolna vagy megjelölne. Ne feltételezd, hogy az időtúllépés azt jelenti, hogy az eseményt soha nem publikálták.

Az állapotokat és a helyreállítási határokat lásd: outbox-viselkedés.

5. Érvénytelen státuszátmenetek​

Hibák jelentésekor őrizd meg a pontos hibaüzenetet:

Érvénytelen outbox státuszváltás: SUCCESS -> PUBLISHED
Érvénytelen outbox státuszváltás: PUSHED_FAILURE -> PUBLISHED
Érvénytelen outbox státuszváltás: SUCCESS -> PUSHED_FAILURE

Ellenőrizd, hogy nem fedi-e át véletlenül az all-in-one és a felosztott runtime egymást. Futtass egy szándékolt topológiát. A jelenlegi publisher atomikus DISPATCHING lefoglalást és feltételes lezárást használ. A consumerek kihagyják a végállapotú munkát. Ezt az útvonalat vizsgáld, ne kényszerítsd vissza a végállapotú sorokat.

6. A consumer-elosztás eltér a várttól​

Ugyanazon group tagjai osztoznak a partíciókon. A különböző groupok függetlenül olvasnak. Mielőtt hibásnak tekintenéd a tétlen tagot, ellenőrizd a groupneveket és a partíciószámot.

7. Üzemeltetési ellenőrzések​

Tarts fenn explicit topicbeállítási szabályzatot a replikációra, a megtartásra és a hozzáférés-vezérlésre. Figyeld a consumer lagot, a dead-letter forgalmat, az outbox-torlódást és a rebalance-naplókat. Tartsd konzisztensen a Node-főverziót a natív moduloknál.

Egy sikeres kapcsolat nem bizonyítja a sorrendet, a feldolgozást vagy a provider-visszaigazolást. Ellenőrizd az érintett üzleti eredményt. A törlés és újralétrehozás, valamint az eraser-parancsok destruktív karbantartások, nem rutinszerű kapcsolati diagnózisok.