Nasadit Java aplikaci na server s výchozím JVM nastavením je jako koupit sportovní auto a jezdit jen na dvojku. Spravne nastaveni muze znamenat rozdíl mezi 100 ms a 5 sekund response time.
Heap size¶
Zakladni pravidlo: -Xms a -Xmx nastavte na stejnou hodnotu. Dynamické zmeny heap size způsobují full GC pauses. Na serverech s 16 GB RAM typicky alokujeme 8-10 GB pro JVM heap. PermGen: 256-512 MB pro enterprise aplikace.
Garbage Collection — CMS¶
Pro webove aplikace pouzivame Concurrent Mark Sweep collector. Parallel GC má lepsi throughput, ale jeho stop-the-world pauses mohou trvat sekundy. CMSInitiatingOccupancyFraction=70 — CMS začne pri 70 procent zaplnění old generation.
GC logging¶
Na kazdem produkčním serveru zapnuté GC logovani. Analyzujeme nástrojem GCViewer. Cilove metriky: minor GC pod 50 ms, full GC méně nez 1x za hodinu, celkový GC čas pod 5 procent.
Thread stack a monitoring¶
Snížením -Xss na 512 KB ušetříte paměť pro více threadů. JMX monitoring pres Nagios: heap utilization, thread count, GC activity. Alert pri heap nad 85 procent.
Shrnuti¶
Xms = Xmx. CMS pro webove aplikace. GC logovani vždy zapnuté. Monitorujte pres JMX. Testujte pod zatezi na staging pred produkci.
Potřebujete pomoc s implementací?
Naši experti vám pomohou s návrhem, implementací i provozem. Od architektury po produkci.
Kontaktujte nás