Eine Java-Anwendung mit Standard-JVM-Einstellungen auf einen Server zu deployen ist wie einen Sportwagen zu kaufen und immer nur im zweiten Gang zu fahren. Die richtige Konfiguration kann den Unterschied zwischen 100 ms und 5 Sekunden Antwortzeit ausmachen.
Heap Size¶
Grundregel: -Xms und -Xmx auf denselben Wert setzen. Dynamische Heap-Size-Änderungen verursachen Full-GC-Pausen. Auf Servern mit 16 GB RAM allokieren wir typischerweise 8–10 GB für den JVM-Heap. PermGen: 256–512 MB für Enterprise-Anwendungen.
Garbage Collection — CMS¶
Für Webanwendungen verwenden wir den Concurrent Mark Sweep Collector. Parallel GC hat besseren Durchsatz, aber seine Stop-the-World-Pausen können Sekunden dauern. CMSInitiatingOccupancyFraction=70 — CMS startet bei 70 % Füllgrad der Old Generation.
GC-Logging¶
GC-Logging ist auf jedem Produktionsserver aktiviert. Wir analysieren es mit GCViewer. Zielmetriken: Minor GC unter 50 ms, Full GC weniger als einmal pro Stunde, gesamte GC-Zeit unter 5 %.
Thread Stack und Monitoring¶
Die Reduzierung von -Xss auf 512 KB spart Speicher für mehr Threads. JMX-Monitoring über Nagios: Heap-Auslastung, Thread-Anzahl, GC-Aktivität. Alarm bei Heap über 85 %.
Zusammenfassung¶
Xms = Xmx. CMS für Webanwendungen. GC-Logging immer aktiviert. Monitoring über JMX. Unter Last auf Staging testen, bevor es in die Produktion geht.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns