Die Anwendung, die auf einem JBoss-Server lief, zeigte plötzlich massive Leistungseinbrüche. Die durchschnittliche Antwortzeit stieg auf über 20 Sekunden, was die Benutzerfreundlichkeit erheblich beeinträchtigte. Ein Neustart der Server brachte nur kurzfristige Besserung, das Problem trat weiterhin in unregelmäßigen Abständen auf.
- Software-Modernisierung
Performance - Rettung in letzter Minute
In der heutigen Zeit sind schnelle und zuverlässige Webanwendungen unerlässlich. Doch was tun, wenn die Performance plötzlich einbricht und die Antwortzeiten in die Höhe schnellen? Genau diese Herausforderung stellte sich uns kürzlich bei einer unternehmensinternen Webanwendung.
Ursachenforschung
Die Suche nach der Ursache gestaltete sich schwierig. Zunächst wurden verschiedene Hypothesen untersucht, darunter eine Überlastung des Servers oder Probleme mit der Datenbank. Doch weder die CPU-Auslastung noch die Heapauslastung zeigten Auffälligkeiten. Auch ein Zusammenhang mit anderen Anwendungen auf demselben Server konnte ausgeschlossen werden.
Die Lösung: Expertise und gezielte Analyse
Um das Problem zu lösen, wurde Herbert – unser Spezialist für JVM-Troubleshootings – hinzugezogen. Als allererstes initiierte Herbert gleich mal die Erstellung von FlightRecordings und regelmäßigen Thread-Dumps. Diese wurden gemeinsam analysiert.
Schon in der ersten Übersicht zeigte sich, dass der Garbage-Collector viel zu aktiv war, was darauf hindeutete, dass ständig Ressourcen geladen und wieder weggeworfen wurden. Also vertieften wir uns in die Thread-Dumps. Dabei fiel auf, dass der JSF-Rendering-Prozess einen Großteil der Ressourcen beanspruchte – scheinbar wurden die JSF-Ressourcen nicht gecached.
Ein Blick in die web.xml offenbarte das Problem: Die JSF-Projectstage war immer noch auf DEVELOPMENT eingestellt – der Wert, den man eigentlich in der Entwicklung verwendet, um sicherzustellen, dass man Änderungen der Applikation auch immer sofort im Browser sieht.
Damit lag die Lösung auf der Hand, die Projectstage wurde auf PRODUCTION umgestellt und damit das Facelet-Caching aktiviert. Nach einem erfolgreichen Test auf einem internen System wurde der Hotfix direkt in der Produktionsumgebung eingespielt.
Das Ergebnis: Performance-Boost und zufriedene Benutzer
Die Auswirkungen waren beeindruckend: Die durchschnittliche Antwortzeit halbierte sich und die Performance-Spitzen verschwanden nahezu vollständig. Die Benutzer waren zufrieden und die Anwendung lief wieder stabil.
Fazit: Gemeinsam zum Erfolg
Die erfolgreiche Lösung dieses Performance-Problems zeigt, wie wichtig es ist, bei komplexen Herausforderungen auf Expertenwissen zurückzugreifen. Durch die Zusammenarbeit mit Herbert konnten wir das Problem schlussendlich schnell identifizieren und beheben, was zu einer deutlichen Verbesserung der Anwendungsleistung führte.
Dieser Fall unterstreicht auch die Bedeutung einer kontinuierlichen Überwachung und Analyse von Webanwendungen. Nur so können Performance-Probleme frühzeitig erkannt und behoben werden, bevor sie die Benutzererfahrung beeinträchtigen.
PS: der Kunde überlegt mittlerweile auch Herberts JVM-Troubleshooting Workshop zu buchen um in Zukunft besser und schneller reagieren zu können.
Du willst die Performance deiner Software tunen?
Vereinbare jetzt einen Termin, um dir eine kostenfreie 1:1 Beratung zu sichern.