Protokolování GC poskytuje cenné informace pro diagnostiku problémů s pamětí a ladění výkonu aplikací založených na Javě. Někteří uživatelé Javy se domnívají, že povolení protokolování garbage collection bude mít významný dopad na jejich výkonnostní metriky, ale dopad může být ve skutečnosti zcela minimální. Zjistěte, jak Azul C4 Collector usnadňuje, zabezpečuje a zpříjemňuje protokolování garbage collection, aniž by to ovlivnilo výkon.
Java Garbage Collector (GC) je kritickou součástí virtuálního stroje Java (JVM). Řídí využití paměti a automaticky uvolňuje paměťový prostor spotřebovaný objekty, které se již nepoužívají. Když se objekty uložené v paměti stanou pro program „nedosažitelnými“, GC je detekuje a vyčistí.
S každou událostí kolekce odhaluje protokol GC klíčové podrobnosti o tom, kolik paměti se používá a uvolňuje, jak dlouho to trvá a zda váš JVM musel vaši aplikaci pozastavit.
Někteří vývojáři v Javě se domnívají, že logování vytvoří dodatečnou režii, spotřebuje místo na disku nebo zvýší latenci během špičkového provozu. Tyto obavy jsou často oprávněné, zejména v prostředích s kritickým výkonem.
Azul Platform Prime ale obsahuje Azul Zing, oceňovanou vylepšenou verzi OpenJDK. S Prime můžete odemknout všechny výhody protokolů GC ve velkém měřítku s minimálními náklady.
Běžná rizika protokolování GC (a jak je Azul řeší)
Pokud je povoleno protokolování GC, pokaždé, když JVM provádí garbage collection, ukládá informace do souboru protokolu.
| Kategorie | Podrobnosti |
|---|---|
| Typ události GC | Minor GC: Vyčistí prostor mladé generace. Major GC: Vyčistí prostor staré generace. Full GC: Vyčistí celý prostor haldy. |
| Čas | Kdy začala událost GC |
| Trvání | Jak dlouho trvala událost GC |
| Množství paměti | Paměť použitá před a po události GC pro každý paměťový fond |
| Celková dostupná paměť | Celková paměť dostupná v každém fondu |
Povolení protokolování GC v aplikaci Java má obecně minimální dopad na výkon, zejména u moderních JVM. Přesný dopad se však může lišit v závislosti na verzi JVM, použitém algoritmu GC a dalších nastaveních a detailech.
Zde je několik faktů, které je třeba vzít v úvahu:
- Vyhněte se zaplňování souborového systému: Java 9 a novější verze mají ve výchozím nastavení povolenou rotaci souborů protokolu a zapíší pouze pět fragmentů protokolu o velikosti 20 MB.
- Omezení I/O operací: JC protokoly se zapisují přímo na disk. To vytváří I/O operace a může zpomalit aplikaci, pokud je disk pomalý nebo je jeho procento využití vysoké.
- Ukládání do vyrovnávací paměti: Moderní JVM obvykle používají vyrovnávací paměť pro protokoly GC. Když je vyrovnávací paměť plná, protokoly se ukládají na disk, aby se snížil dopad na I/O operace. Vyrovnávací paměť zabírá paměť, kterou by aplikace jinak mohla využít.
- Sledování podrobných protokolů GC: Pokud jsou povoleny podrobné protokoly GC, můžete zaznamenat dopad na výkon, protože záznam a zpracování těchto dat spotřebovává prostředky CPU.
- Využijte bezpečné body: Veškerá aktivita protokolování GC probíhá v „bezpečných bodech“ během provádění aplikace, kde nezpůsobuje více pauz typu „zastavení světa“, než by tomu bylo v důsledku běžné aktivity GC.
Ne všechny JVM jsou si však rovny. Azul Zing posouvá logování GC na novou úroveň a poskytuje vývojářům hlubší vhled a větší kontrolu s menším laděním a režijními náklady.
GC logging, Azul way
Azul Platform Prime zjednodušuje, usnadňuje a zabezpečuje protokolování GC.
Na rozdíl od běhových prostředí založených na OpenJDK, která často vyžadují další příznaky, jako je gc* nebo safepoint, aby získala úplný obraz, Zing automaticky zahrnuje nejužitečnější údaje o výkonu pomocí jediného příznaku:
-Xlog:gc:gc.log
Zing logy jdou ještě dál a zahrnují:
- Aktivita bodu Safepoint: I se základním příznakem GC Zing zahrnuje všechny pozastavení GC a informace o bodech Safepoint.
- Chování JIT kompilátoru: Pomáhá diagnostikovat zpoždění zahřívání nebo neefektivní cesty kompilace.
- Systémové metriky: Zahrnují využití CPU a paměti, statistiky mezipaměti stránek Linuxu a přehledy na úrovni procesů.
- Kontext kontejneru a procesu: Usnadňuje korelaci změn prostředí s chováním GC.
- Informace o paměti mimo haldu: Nezbytnost pro diagnostiku problémů s nedostatkem paměti ve složitých systémech.
Tento dodatečný kontext může vývojářům pomoci rychleji řešit problémy, omezit dohady při ladění a eliminovat nákladné metody pokus-omyl při řešení problémů s výkonem.
Eliminujte pauzy GC pomocí C4
Zing je oceňovaná vylepšená verze OpenJDK, která je součástí Azul Platform Prime. Zing, založený na OpenJDK, je ověřen TCK a poskytuje vynikající výkon, odezvu a efektivitu aplikací. Vždy zaznamenává pozastavení bodů Safepoint a dokonce i další informace, které se ve výchozím nastavení v protokolech GC OpenJDK nezobrazují, jako je aktivita kompilátoru just-in-time (JIT), využití CPU a paměti, metriky mezipaměti stránek Linuxu a několik dalších metrik, které jsou často relevantní pro analýzu výkonu systému.
Ve srovnání se standardními běhovými prostředími OpenJDK poskytují protokoly GC generované Zing JVM širokou škálu dalších informací.
- Obecné systémové informace jsou užitečné pro ověření nastavení a dalších konfigurací, včetně protokolu GC.
- Informace o haldě v Javě obsahují podrobné informace o sběru odpadků a správě paměti.
- Informace o paměti mimo haldu (Off-Heap Memory Info) se zabývají pamětí alokovanou mimo haldu Java a pomáhají diagnostikovat chyby nedostatku paměti a obecnou spotřebu paměti.
- Informace o procesech, kontejnerech a systému shromažďují průběžné informace o prostředí, ve kterém JVM běží, což je skvělé pro kontrolu stavu a korelaci prostředí s dalšími zaznamenanými aktivitami aplikací.
- Informace o kompilátoru JIT poskytují podrobné informace o kompilátoru JIT, včetně chování JVM při zahřívání a okamžiku, kdy je JVM připraveno k provádění provozu.
Skutečné výsledky: od poznatků k dopadu
Zákazníci společnosti Azul nasadili systém Zing s kolektorem C4 do provozu ve velkém měřítku a výsledky mluví samy za sebe.
![]() LMAX běžel O 48% rychlejší než jiné běhové prostředí Java a zlepšily poměr plnění objednávek eliminací zpomalení vyvolaných GC. Zobrazit případovou studii |
Regenerovaný pracovní den 42 000 osobohodin během 18 měsíců, které by byly stráveny laděním výkonu GC a řešením problémů. Zobrazit případovou studii |
![]() BIDS dramaticky zlepšil výkon a zavedl 95% snížení v rámci ročního úsilí o ladění a alternativní řešení GC. Zobrazit případovou studii |
Mastercard zlikvidovala více než 10 000 pozastavení svozu odpadu za den pro systémy, které identifikují podvody během mikrosekund při velkém objemu. |
Nástroje, které vás posunou dál
S přítomnými protokoly GC nabízí Azul bohaté nástroje, které pomáhají s rozuměním dat:
- Analyzátor protokolů Azul GC: Grafický nástroj, který převádí protokoly do grafů, časových os a trendů, zahrnujících aktivitu GC, chování JIT, systémové statistiky a další.
- jstat a VisualVM: Standardní nástroje, které doplňují protokoly Zing pro křížové ověřování a monitorování v reálném čase.
- Dokumentace a podpora: Dokumentace k protokolování GC v Azulu obsahuje rozpisy formátů a osvědčené postupy pro maximální využití každého zaznamenaného bajtu.
Získejte lepší přehled bez kompromisů
Pokud jste váhali s povolením protokolování Java GC v produkčním prostředí, teď je čas to přehodnotit. S Azul Zing a kolektorem C4 v Platform Prime získáte veškerý přehled bez jakéhokoli přerušení. Více dat, méně pauz a žádné další ladění.
Ať už řešíte incident, diagnostikujete úniky paměti nebo ladíte výkon, protokoly GC jsou nezbytné – a Azul je usnadňuje.
Jste připraveni se hlouběji ponořit do výkonu vašeho JVM?
Zdroj: Azul



