Nasadit Java aplikaci na server s vychozim JVM nastavenim je jako koupit sportovni auto a jezdit jen na dvojku. Spravne nastaveni muze znamenat rozdil mezi 100 ms a 5 sekund response time.
Heap size¶
Zakladni pravidlo: -Xms a -Xmx nastavte na stejnou hodnotu. Dynamicke zmeny heap size zpusobuji 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 ma lepsi throughput, ale jeho stop-the-world pauses mohou trvat sekundy. CMSInitiatingOccupancyFraction=70 — CMS zacne pri 70 procent zaplneni old generation.
GC logging¶
Na kazdem produkcnim serveru zapnute GC logovani. Analyzujeme nastrojem GCViewer. Cilove metriky: minor GC pod 50 ms, full GC mene nez 1x za hodinu, celkovy GC cas pod 5 procent.
Thread stack a monitoring¶
Snizenim -Xss na 512 KB usetrite pamet pro vice threadu. 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 vzdy zapnute. Monitorujte pres JMX. Testujte pod zatezi na staging pred produkci.