Technická případová studie
Případová studie: pád po dlouhodobém provozu vysledovaný až k úniku handlů
Technická případová studie pádu, který se projevuje jen po zhruba měsíci provozu a který jsme uspořádáním pozorovacích bodů a rozšířením logování zúžili na vyšetřování úniku handlů.
Přehled případu
Případová studie se týká aplikace pro Windows, která náhle spadne až po zhruba měsíci nepřetržitého provozu. Začali jsme přípravou míst pozorování a nakonec jsme vyšetřování zúžili převážně na únik handlů. Podstatné nebylo jen samotné zjištění příčiny, ale také to, že jsme rozhodli, která pozorování je třeba připravit jako první.
Příznaky
- Pád se neprojeví během několika dní, ale jen po dlouhodobém provozu
- Podle podoby výjimky se těžko posoudí, zda jde o únik
- Porucha nastává jen v provozu a na vývojovém počítači je nutné podmínky reprodukce zúžit
Omezení
- Čekat na reprodukci celé měsíce není realistické
- Protože do hry vstupuje opětovné připojení kamery a chybové cesty, nestačí logy běžného provozu
- Bylo nutné nepřetržitě sledovat, který zdroj přibývá
Co jsme pozorovali
- Pravidelné záznamy (heartbeat) hodnot
Handle Count,Private BytesaThread Count - Logy hranic relací: zahájení, opětovné připojení a ukončení
- Logy životního cyklu v párech
create/open/registeraclose/dispose/unregister
Jak jsme příčinu izolovali
Nejprve jsme nesledovali „pád po dlouhodobém provozu“ přímo, ale zúžili jsme reprodukci na chybové cesty kolem opětovného připojení a timeoutů. Díky tomu bylo možné usoudit, že je rozumnější podezřívat únik handlů než únik paměti, a pozorování jsme soustředili tímto směrem.
Jak jsme situaci zlepšili
- Rozšířili jsme sledované položky, aby šlo sledovat nejen okamžik pádu, ale i trend nárůstu
- Uspořádali jsme logy hranic relací tak, aby bylo snazší dohledat, která část kódu zdroj otevřela a která jej zavřela
- Výsledky vyšetřování jsme uspořádali do podoby, kterou lze snadno navázat na následnou infrastrukturu pro testování chybových cest
Služby, na které se případ vztahuje
Tato případová studie se vztahuje na dvě služby: na vyšetřování chyb a analýzu příčin, které izoluje poruchy projevující se až po dlouhodobém provozu, i na vývoj aplikací pro Windows, při kterém se logování, opětovné připojení a provozní pozorování řeší přímo v implementaci.
Poraďte se s námi
Pokud tato stránka odpovídá situaci, kterou řešíte, poraďte se s námi a připojte současný kontext i to, jakou podporu potřebujete.