Automatisierte Erkennung von Leistungseinbußen

Benchmark-Tools im AWS SDK für Java 2.0

| Redakteur: Stephan Augsten

Der Code, um den Build der Benchmarks für das AWS SDK und anschließend die Tests selbst anzustoßen.
Der Code, um den Build der Benchmarks für das AWS SDK und anschließend die Tests selbst anzustoßen. (Bild: AWS)

Das AWS Software Development Kit für Java 2.0 wurde um automatisierte Performance-Rückgangs-Tests erweitert. Die Tools prüfen jede Änderung am SDK vor der Veröffentlichung auf potenzielle Leistungseinbußen.

Amazon Web Services arbeitet nach eigenen Angaben stetig daran, verschiedene Leistungsaspekte des AWS SDK zu verbessern. In der Vergangenheit habe man beispielsweise auf Pull-Request-Reviews vertraut, um Code-Änderungen zu erfassen, die zu Performance-Problemen führen könnten, schreibt die Software-Development-Ingenieurin Zoe Wang im AWS Blog.

Dabei könne aber leicht eine einfache Codezeile übersehen werden, die schlussendlich zu Performance-Problemen führt. Zwischenzeitlich habe man außerdem Performance-Einbußen durch aktualisierte SDK-Abhängigkeiten registriert, deren Auswirkungen auf das SDK sich mit den bestehenden Möglichkeiten weder überwachen noch quantifizieren ließen.

„Mit den neuen Benchmark-Tests sind wir nun in der Lage, Leistungsrückgänge zu erkennen, bevor Änderungen in den Master eingebunden werden“, schreibt Wang. Der Benchmark-Harness-Code ist Open-Source und befindet sich im gleichen Repository wie das AWS SDK für Java 2.0 und wird mit dem Java Microbenchmark Harness oder JMH implementiert.

Sobald das Benchmark-Tool ausgelöst wird, führt es zunächst eine Reihe von vordefinierten Szenarien mit verschiedenen http-Clients aus, die Anfragen an lokale Mock-Server senden. Anschließend misst es den Durchsatz der aktuellen Revision und vergleicht die Ergebnisse mit den vorhandenen Basisergebnissen, die aus der zuvor veröffentlichten Version berechnet wurden.

Die Leistungstests schlagen fehl, wenn der Durchsatz der neuen Änderung um einen bestimmten Schwellenwert sinkt. Die Durchführung der Benchmark-Tests für jede Pull-Anfrage ermöglicht es dabei, all jene mit problematischen Änderungen zu blockieren. Zusätzlich erleichtert das Benchmark-Tool die Überwachung der SDK-Leistung im Laufe der Zeit.

Aus den generierten Basisdaten lassen sich Informationen ableiten, beispielsweise welcher HTTP-Client die beste Leistung hat oder welchen Durchsatzgewinn er durch das Tuning von SDK-Konfigurationen erzielen kann. So könne die Umstellung auf einen OpenSSL Provider im Falle des NettyAsyncHttpClient den Benchmarks zufolge zehn Prozent mehr Durchsatz erreichen, berichtet Wang.

Wie sich die Benchmarks starten lassen, beschreibt Wang im genannten Blog-Eintrag. Außerdem empfiehlt sie, den Benchmarks Harness auch lokal auszuprobieren, um potenzielle Leistungseinbußen zu erkennen.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46161792 / Cloud & PaaS)