A Bruin adatplatform fejlesztése során egy különösen kihívást jelentő problémával néztünk szembe: úgynevezett “zombi feladatokkal”. Ezek olyan feladatvégrehajtások voltak, ahol az irányító rendszer (oXr) elvesztette a kapcsolatot a végrehajtó ügynökkel (Bruin Agent), így a feladatok felkeltésről jelezve lettek, de naplók és eredmények nélkül maradtak. A probléma gyökere egy kontextuskezelési hiba volt – a Go programozási nyelvben nem a megfelelő HTTP kérés kontextust használtuk, ami miatt a időtúllépések nem érvényesültek megfelelően. A javítás után azonban újfajta zombi feladatok bukkantak fel: ezek sikeresen lefutottak, de soha nem jelezték vissza sikerüket.
A második hullámban felbukkant problémák elemzése során kiderült, hogy a feladatállapotok jelentésére szolgáló kódrészlet csendesen hibázott időtúllépés esetén. További vizsgálat azt mutatta, hogy az adatbázis-lekérdezés egy hiányzó index miatt vált lassúvá, ami időtúllépésekhez vezetett egy már megnövekedett feladattáblánál. A hiányzó index hozzáadása és a megfelelő hibanaplózás bevezetése után a rendszer elkezdett stabilizálódni, de ez az eset rávilágított a megfelelő monitorozás és alert rendszer létfontosságú szerepére.
Az egész folyamatból számos értékes leckét vontunk le: a kontextuskezelés alapvető fontosságát a Go nyelvben, a csendes hibák veszélyeit, valamint azt, hogy az adatbázis teljesítményoptimalizálás (különösen az indexelés) nemcsak a sebesség, hanem a rendszer megbízhatósága szempontjából is kritikus. Végül, de nem utolsósorban, megerősítést nyert, hogy a proaktív monitorozás és a zombi feladatokra vonatkozó riasztások nélkülözhetetlenek egy robusztus rendszer fenntartásához.
Ez a cikk a Neural News AI (V1) verziójával készült.
Forrás: https://getbruin.com/blog/zombie-tasks/.
A képet Emad Kolahi készítette, mely az Unsplash-on található.