Fünf Tipps für die Java-Leistungsoptimierung

Entdecken Sie, welches Profiling Tool Sie verwenden sollten, um die Java-Leistung zu optimieren und welche Daten Sie als Teil Ihrer CI/CD-Pipeline speichern müssen.

Der beste Weg, den JVM-Durchsatz zu optimieren und Laufzeitengpässe zu vermeiden, besteht darin, das Java Performance Profiling zu einem wichtigen Bestandteil der Strategie für Continuous Development und Deployment (CI/CD) zu machen.

Im Folgenden finden Sie fünf Tipps und Best Practices für die Java-Leistungsoptimierung, die Ihnen dabei helfen, das Optimum aus Ihrer lokalen Hardware und Ihren in der Cloud gehosteten Laufzeitumgebungen herauszuholen.

1. Schalten Sie niemals das Java Performance Profiling aus

Java Flight Recorder ist ein effizientes Java Performance Profiling Tool, das direkt in die Java Virtual Machine (JVM) integriert ist. Es ist leichtgewichtig und hat minimalen Einfluss auf laufende Anwendungen.

Die Standardeinstellung wirkt sich weniger als ein Prozent auf die Leistung aus, und selbst die extremsten Einstellungen für die Datensammlung verbrauchen kaum mehr als zwei Prozent. In Angesichts der Tatsache, dass kein Produktionsserver je über einen längeren Zeitraum zu 50 Prozent ausgelastet ist, sollten immer genügend Ressourcen vorhanden sein, um Java Flight Recorder im Hintergrund laufen zu lassen.

Der Vorteil dieser Konfiguration ist, dass bei einem JVM-Absturz oder einem Laufzeitfehler eine Aufzeichnung aller Ereignisse, die zu dem Fehler geführt haben, zur Verfügung steht. Selbst auf einem Produktionssystem unter hoher Last sollte ein Java Performance Profiler immer laufen. Tatsächlich sind die von einem Java Performance Profiling Tool gewonnenen Metriken gerade dann nützlich, wenn eine JVM unter extremer Last steht.

2. Wissen, wann man Sampling der Instrumentierung vorzieht

Es gibt zwei verschiedene Ansätze zur Überwachung und Profilerstellung der JVM: Sampling und Instrumentierung.

Ein Java Performance Profiler, der einen Sampling-Ansatz verwendet, belastet die JVM zur Laufzeit vorhersehbarer. Daher ist Sampling-basiertes Profiling am besten für die Suche nach Mustern in den Bytecode-Aufrufen der JVM geeignet.

Instrumentierungs-Profiler sind dagegen genauer in ihrer Anwendung. Bei der Instrumentierung fügen Softwarearchitekten zusätzlichen Code oder Komponenten in das System ein. Sie fügen diese an Stellen ein, von denen sie glauben, dass sie wahrscheinlich Leistungsprobleme verursachen. Da die Instrumentierung in den Anwendungscode eingefügt oder in die JVM eingebettet werden, werden sie jedes Mal ausgelöst, wenn sie auftreten.

Wenn Sie ein gutes Verständnis davon haben, was das Problem ist und wo sich das Problem in der Codebasis befindet, sind instrumentenbasierte Profiler tendenziell effektiver.

Ein strategischer Einsatz sowohl von Sampling als auch Instrumentierungs-Profilern führt zu den besten Ergebnissen bei der Java-Leistungsoptimierung.

3. Erweitern Sie die Analyse von JVM-Leistungsproblemen mit KI

Egal, ob es sich um ein Speicherleck oder einen Thread-Stopp handelt, die meisten Java-Leistungsprobleme folgen bekannten Verhaltensmustern. Bevor Sie viel Zeit in die Analyse eines JVM-Heap-Histogramms oder die Untersuchung von Java-GC-Pausenzeiten investieren, sollten Sie Ihre Java-Performance-Profiler-Daten durch ein Analyse-Tool laufen lassen, das einen gewissen Grad an künstlicher Intelligenz (KI) auf die Datei anwenden kann.

Die meisten Java Performance Profiling Tools sind in der Lage, die Art des Engpasses schnell zu kategorisieren und gehen sogar so weit, die tatsächliche Codezeile zu identifizieren, die den Durchsatz und die Latenz verlangsamt.

4. Bewahren Sie Performance-Benchmarks in der Versionskontrolle auf

Eine Historie der Leistungsdaten hilft Ihnen, Muster in Ihren Java-Leistungsmetriken zu erkennen.

Erstellen Sie eine Performance-Test-Suite für Ihre Anwendungen, lassen Sie sie als Teil jedes Continuous Integration Builds laufen und stellen Sie sicher, dass Sie Java Flight Recorder im Hintergrund eingeschaltet haben. Speichern Sie dann die generierte Flight-Recorder-Datendatei in Git oder GitHub als Teil des CI/CD-Builds.

Diese Java-Performance-Profiling-Strategie erstellt nicht nur einen Performance-Benchmark für Ihre Anwendungen, sondern gibt Ihnen auch eine Historie, über die Sie sehen können, wie sich Trends im Laufe der Zeit herausbilden. Sie sind vielleicht nicht in der Lage, ein sich abzeichnendes Performance-Problem von einem Sprint zum nächsten zu identifizieren, aber ein Vergleich der JVM-Profiler-Daten über eine Reihe von Wochen oder Monaten wird helfen, Muster zu erkennen.

Sagen Sie den Entwicklern außerdem, dass, wenn die Performance-Metriken aus dem akzeptablen Bereich herausfallen, dies als ein fehlerhafter Build angesehen wird. Bringen Sie die Entwickler schon früh im Entwicklungszyklus dazu, über nicht-funktionale Anforderungen wie Leistung und Sicherheit nachzudenken.

5. Modernisieren Sie Ihre Java Profiling Tools

Bleiben Sie nicht in Ihren Gewohnheiten stecken, wenn es um Java Performance Profiling Tools geht.

Die Tools, die vor zehn Jahren bei der Fehlerbehebung von Anwendungen, die auf WebSphere- oder Tomcat-Servern bereitgestellt wurden, effektiv waren, werden bei der Fehlerbehebung von Microservices-Anwendungen, die auf Docker-Containern bereitgestellt wurden, nicht mehr so effektiv sein. Die Welt der Softwareentwicklung, des Designs und des Deployments hat sich in den letzten zehn Jahren stark verändert, und die Java Performance Profiling Tools, die Sie verwenden, müssen sich mit ihr verändern.

VisualVM ist nach wie vor ein beliebtes Performance Profiling und Monitoring Tool, aber neue Analyse-Tools wie Java Mission Control bieten erweiterte Möglichkeiten zur Visualisierung und Überprüfung von JVM-Metriken. Und viele Anbieter haben sich auf die Analyse von JVM-Laufzeiten spezialisiert, wenn der Bytecode in Docker-Containern verpackt und in Kubernetes-Clustern bereitgestellt wird. Vergewissern Sie sich immer, dass das von Ihnen verwendete Analysewerkzeug Ihren Anforderungen an das Java Performance Profiling entspricht.

Zusammenfassung

Zusammengefasst lauten die fünf Tipps, die Ihnen helfen, das Beste aus Ihren Java Performance Profiling Tools und Routinen herauszuholen:

  1. Schalten Sie das Java Performance Profiling niemals aus.
  2. Evaluieren Sie, wann Sie Sampling der Instrumentierung vorziehen sollten.
  3. Erweitern Sie die Analyse von JVM-Leistungsproblemen mit KI.
  4. Behalten Sie Benchmarks in der Versionskontrolle.
  5. Modernisieren Sie Ihre Java Profiling Tools.

Halten Sie sich an diese Tipps zum Java Performance Profiling und seien Sie drohenden JVM-Engpässen, die den Durchsatz Ihrer Anwendung zu bremsen drohen, einen Schritt voraus.

Erfahren Sie mehr über Softwareentwicklung