2012. június 13., szerda

DynaTrace - Performancia problémák analizálása

A következőkben a performancia problémák analizálásához kapcsolódó dynaTrace-es dashboard-okat fogom bemutatni. Az analizálást sok hasznos feature is segíti, ilyen például a dashboardok közötti átnavigálhatóság, a hotspotok azonnali kijelzése vagy az időablak széleskörű állíthatósága. 

PurePaths

A PurePath-ok minden egyes kérésnek a teljes végrehajtási útvonalát tartalmazzák, (beleértve az RMI, WebService, JMS, EJB hívásokat) kontextus információkkal kiegészítve (naplók, kivételek, metódus argumentumok). Az alábbi példánál a kijelölt PurePath hívási láncán és a jobb oldali HotSpots panelon is könnyen beazonosítható, hogy a teljes végrehajtási időért a validateCreditCardNumber(String,int) metódus volt a felelős! Gondoljunk csak bele, hogy egy nagyobb rendszer esetén ezt mennyi idő lett volna megállapítani a hagyományos módszerek segítségével...


WebRequests

A WebRequests nézetnél megtekinthető, hogy milyen egyedi webes kérések (URI+Query String) érkeztek a kiválasztott időintervallumban. Ahogy a cikk elején említettem innen tovább fúrhatunk bármilyen irányba.


MethodHotspots

A method hotspots nézetből megtudhatjuk, hogy a kijelölt időszakban mely metódusok futása tartott a legtovább. Ez a nézet kiválóan alkalmas arra, hogy beazonosítsuk azokat a metódusokat amelyeken érdemes lesz optimalizálni. Ha további infóra lenne szükségünk, lefúrhatunk azokhoz a PurePath-okhoz is ahol a kiválasztott metódus meghívásra került. 


Methods

A metódus nézetnél többek között kideríthetjük, hogy melyik metódus hívódott meg a legtöbbször, mennyi volt a metódusok átlagos végrehajtási ideje vagy hogy összesen mennyi időt vett igénybe a végrehajtásuk.


WebServices, Messaging

A Web szolgáltatásokról és a Messaging-ről is begyűjthetünk néhány információt az ezekhez tartozó dashboard-oknál vagy a lefúrások során.



Logging, Exceptions

Az előbbiekhez hasonlóan a PurePath-okból kiindulva vagy az időablakra való szűkítéssel megnézhetjük a napló üzeneteket és a keletkezett kivételeket is. Feliratkozhatunk egy-egy számunkra érdekes kivételre, majd lefúrhatunk azokhoz a PurePath-okhoz ahol ez előfordult. Érdemes megemlíteni, hogy az alkalmazás belső működéséhez tartozó kivételek is kijelzésre kerülnek, de ezeket mint Business Exception-öket el tudjuk rejteni.


Transaction Flow

A Transaction Flow nézetből megtudhatjuk, hogy a PurePath-ok honnan indultak ki, milyen alrendszereken haladtak keresztül és hogy hol mennyi időt töltöttek el, azaz beazonosíthatjuk azokat a rendszereket amik a belassulásokért felelősek.


Nagyvállalati környezetben legtöbbször nincs a teljes rendszerre kiterjedő architekturális leírás, hiányosan vagy egyáltalán nincsenek ledokumentálva az alkalmazások közötti kapcsolatok és függőségek. Valószínűleg költséges lenne, de gondoljunk bele ha az összes rendszerre feltelepítenénk a dynaTrace ágenseit, a Transaction Flow segítségével automatikusan feltérképezhetnénk a rendszer teljes architektúráját. Sőt! Mivel a feltérképezés folyamatos, mindig naprakészek információink is lennének.

Annak ellenére hogy csak a fontosabb lehetőségekre tértem ki, így a cikk végére azt hiszem már körvonalazódik hogy mire is képes a dynaTrace. A folytatásban a dynaTrace-es performancia monitorozásról fogok blogolni.

2012. június 1., péntek

DynaTrace - Kalandozás a szenzorok világában!

Frissítve: 2012.12.02.

A PurePath technológia lehetővé teszi, hogy az összes felhasználói műveletet teljes részletességgel lekövessük a hívási lánc alapján. Felvetődik a kérdés, hogy ez vajon nem fogja nagyon belassítani az alkalmazás futását? A válasz nem, az overhead az előző cikkben említett 2% körül marad mindaddig amíg a dynaTrace-t megfelelően használjuk és konfiguráljuk! A továbbiakban elmagyarázom a szenzorok működését, amiből kiderül hogy hogyan is tartható ez a minimális overhead.

DynaTrace szenzorok

A dynaTrace szenzorok feladata, hogy kinyerjék a szükséges adatokat és kontextus információkat (naplók, kivételek, cpu idők, futási idők, stb..) a vizsgált metódusokból. Kereskedelmi termék lévén, a szenzorok részletes működéséről nem esett szó a dynaTrace-es oktatáson, de egy kis Java ill. performancia mérési tudással a két szenzor típus alkalmazása alapján kikövetkeztethető!

Auto szenzorok - Mintavételezés

Az auto szenzorok olyan előre definiált szenzorok, amelyek mindig be vannak kapcsolva és rámutatnak a problémás, nagy végrehajtási idejű metódusokra. A megvalósítást tekintve az auto szenzorok a mintavételezés alapján működnek, azaz a háttérben néhány DynaTrace-es démon szál folyamatosan fut, amik a beállított mintavételezi gyakoriság alapján (pl.: 25ms) megvizsgálják az éppen futó szálak stack-jét és begyűjtik az adatokat.


A fenti ábrán a t1-t9 időpillanatokban történik a mintavételezés és 4 metódus van végrehajtás alatt. A metódus1 és metódus2 végig, a metódus3 részlegesen, a metódus4 pedig egyáltalán nem kerül rögzítésre a vizsgált időintervallumban. Látszik, hogy a mintavételezés nem szolgáltat pontos mérési eredményeket, de kiválóan alkalmas arra, hogy rámutasson a hosszan futó metódusokra (HotSpots) mindemellett az overhead végig stabil marad a mintavételezési gyakoriság függvényében. 

Metódus szenzorok - Instrumentáció

Miután az auto szenzorok rámutattak a problémás funkciókra, ezekre metódus/osztály/csomag szinten custom szenzorokat tudunk elhelyezni hogy pontosabb információkat nyerjünk ki. A metódus szenzorok az instrumentáció alapján működnek, azaz aspektus orientált módon rátelepednek a kódra és rögzítik a szükséges információkat. Bár az instrumentáció segítségével megkaphatjuk a pontos futási időket és hívási számot is, ezek állítgatására jobban oda kell figyelni, mert az overhead itt már a megfigyelt kód futásával lesz arányos. 

Smart szenzorok - Szenzor csomagok

Az web-alkalmazásunk által használt technológiák alapján, többféle szenzor csomagból válogathatunk: EJB, Spring, Struts, WebService, Hibernate, JDBC, XML, JMS, stb... valamint lehetőségünk van az általuk begyűjtendő információk finomhangolására is.

A szenzorok konkrét megvalósítása ennél azért trükkösebb lehet, mivel a gyakorlat azt mutatja, hogy az esetek 90%-ban elegendő információt szolgáltatnak az auto szenzorok is. Remélem sikerült felkeltenem az érdeklődésedet az elméleti bevezetőkkel, a következő részben pedig a gyakorlati oldaláról is megismerheted a dynaTrace-t.