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 Bytes a Thread Count
  • Logy hranic relací: zahájení, opětovné připojení a ukončení
  • Logy životního cyklu v párech create/open/register a close/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.

Zpět na úvodní stránku