pondělí 26. listopadu 2012

JRockit Mission Control a JRockit Flight Recorder

Řešili jsme teď u zákazníka problém s memory leakem na OSB, a k mému překvapení jsem zjistil, že ne všichni vývojáři a admini jsou obeznámeni s dvěma tooly, které se k tomu skvěle hodí. Snad vám tedy jejich krátké představení pomůže udělat si představu, jestli by nemohly být dobré i pro vaše použití.

JRockit Mission Control

JRMC je sada nástrojů, které umožňují monitorovat a profilovat aplikace. Přitom zatěžuje sledovanou infrastrukturu jen minimálně (méně jak cca 1%), a je tedy možné ji využít i pro sledování a diagnostiku provozního prostředí. JRMC může běžet buď jako samostatná aplikace, nebo v Eclipse. Sestává ze tří modulů: konzole pro správu, runtime analyzeru a detektoru memory leaků.
Při vývoji může být JRMC využitá k ladění a optimalizaci kódu i k hledání memory leaků, které v praxi patří mezi nejobtížněji dohledatelné typy problémů.
V provozu je používána ke sledování stavu systému, včetně možnosti nastavení a generování alertů pro případy, kdy zátěž dosáhne limitní úrovně nebo hodnot, které lze nastavit.
Z pohledu technické podpory to také může být zajímavý tool, použitelný pro hledání defektů buď v reálném provozu, nebo ex post na základě průběžně ukládáných nahrávek provozu. Ty je pak možné kdykoli později diagnostikovat.

Jiný produkt pro WebLogic s takovým záběrem zatím na trhu asi není. Blízko mu bude asi Sun GC viewer, ale ten poskytuje o dost menší subset možností jak diagnostiky, tak ladění. O něco méně blízko budou Optimizeit od Borlandu, Wiley a Yourkit, které jsou zaměřené trochu jinak a k JRMC by se spíše hodily jako doplněk.

No a co tedy vlastně umí JRMC monitorovat? Je to především využití CPU, alokace paměti a heapu, GC, běžící thready a jejich stack tracy a MBeany. Např. sledování threadu vypadá takto:


JRockit Flight Recorder

JRFR je obdobou černé skříňky umístěné v letadlech, umí zaznamenat všechny události, ke kterým během provozu systému došlo. Když se pak objeví nějaký problém nebo výpadek systému, je možné se vrátit zpět v čase a podívat se, co k problému vedlo.
Zapisování  událostí je prováděno na principu kruhového bufferu, který je stále dokola plněn. Stejně jako u JRMC je přitom overhead s ním spojený jen minimální. Samozřejmě je prointegrován s JRMC a nahrazuje JRA modul. JRFR ukládá nejen data z JRockit VM (od R28), ale i z WLDF a FMW Dynamic Monitoring systému, a umí tedy získávat eventy i z ADF, Web Center a SOA Suity.

K čemu se JRFR hodí

  • k provádění diagnostiky na běžících produkčních systémech
  • trasování zpátky v čase
  • snímání a vyhodnocování aktivit/kroků vedoucích k nasimulování určitého problému
  • snímání dat na všech vrstvách (JVM, WLS, DMS...)
  • post mortem analýza pomocí JRMC GUI
  • dumpování JRockitu a crash analýza

...a k čemu se nehodí

  • ke snímání eventů spojených s extrémním payloadem (množstvím nesených dat) nebo obrovských počtů (řádově milionů a víc/sec) eventů
  • ukládání dlouhé historie - není tedy náhradou Debug logování nebo server logů.

 Tož to jsou hlavní vlastnosti těchto dvou užitečných toolů. Pokud byste si je chtěli vyzkoušet, celkem dobrý návod je tady.

Žádné komentáře:

Okomentovat