Wow! Much Profiling!

Sniffy: Profiling für Java-Anwendungen direkt im Browser

Melanie Feldmann

© Shutterstock / NIKON-T20

Sniffy ist ein interaktiver Profiler für Java-Anwendungen, der Ergebnisse direkt im Browser anzeigt. Ab der ersten Zeile Code lassen sich mit dem kleinen Widget Performancedaten abfragen.

Sniffy ist ein Java-Profiler, der seine Messergebnisse zur aktuellen Seite einer Web-Anwendung direkt im Browser anzeigt. Er ermöglicht außerdem Profiling von Unit- oder Komponententests. Das Tool validiert auch ausgeführte Datenbank-Queries. Es zählt beispielsweise die Anzahl an Queries und an betroffenen Datenbankzeilen oder die TCP-Verbindungen. Es soll sich besonders gut dafür eignen, N+1-Probleme und andere Performance Antipattern mit Unit-Tests zu finden.

Zusätzlich lassen sich mit dem Tool ausgehende Verbindungen abschalten, um die Fehlerresistenz einer Anwendung zu testen. In einer Übersicht im Browser zeigt das Tool alle ausgehenden Verbindungen des Servers an. Dort kann man diese auch direkt deaktivieren. Sniffy wirft eine java.net.ConnectException, wenn die Anwendung versucht eine der deaktivierten Verbindungen zu nutzen.

Sniffy lässt sich stand-alone als Uber-JAR installieren und braucht keine weiteren Dependencies. Zur Installation ist aber Java 8 nötig. Wenn der Build des Projekts einmal steht, können alle Java-Version ab 1.6 genutzt werden. Das JAR muss lediglich zum Klassenpfad der Anwendung hinzugefügt werden. Eine Integration mit Spring Boot ist ebenfalls möglich. Für Test-Frameworks stehen Sniffy-Artefakte für JUnit, Spring Test und TestNG bereit.

Die aktuelle Version von Sniffy ist 3.1.2 und steht auf GitHub bereit. Das Tool steht unter eine MIT-Lizenz. Eine Demo findet sich hier.

Geschrieben von
Melanie Feldmann
Melanie Feldmann
Melanie Feldmann ist seit 2015 Redakteurin beim Java Magazin und JAXenter. Sie hat Technikjournalismus an der Hochschule Bonn-Rhein-Sieg studiert. Ihre Themenschwerpunkte sind IoT und Industrie 4.0.
Kommentare
  1. Dr. Eck-Spatz2017-03-21 13:14:23

    Zitat: "...Das JAR muss lediglich zum Klassenpfad der Anwendung hinzugefügt werden..."

    Damit isses leider nicht getan. Klingt für mich nach "...und ab hier passiert ein Wunder..."
    Ein bisschen was muss man schon noch tun: http://sniffy.io/docs/latest/#_setup

    Und was bedeutet bitte der Satz: "...Wenn der Build des Projekts einmal steht, können alle Java-Version ab 1.6 genutzt werden..."?

  2. Melanie Feldmann2017-03-21 14:36:03

    Hallo Dr. Eck-Spatz

    Ich beziehe mich auf die Stand-alone-Integration, nicht auf die Spring-Integration. Siehe hier: http://sniffy.io/docs/latest/#_standalone_setup

    Zitat: "Just grab the sniffy-3.1.2.jar from our releases page and add it to the classpath of your application."

    Zur Frage 2: Vielleicht ist der Originaltext im Wiki auf GitHub deutlicher: "JDK8 is required only for building the project - once it's built, you can use Sniffy with any JRE 1.6+" https://github.com/sniffy/sniffy/wiki

  3. Dmitry Bedrin2017-03-26 18:25:07

    Sniffy author here.

    Indeed JDK8 is required only for development of the Sniffy itself (cause it's much nicer to write unit tests with Java 8 features) - you can us Sniffy with Java 6 and higher. https://github.com/sniffy/sniffy/wiki/Building-Sniffy

    Regarding the installation and setup - you need to add Sniffy to the classpath of your application (either drop Sniffy uber-jar to the classpath of your app manually, or use Maven/Gradle) AND also configure the JDBC driver and/or Servlet Filter. Install and Setup sections of the documentation cover it but still there's a room for improvement here both in the documentation and in simplification of the install process. http://sniffy.io/docs/latest/#_install

    Thanks for posting an article about Sniffy!
    Will be happy to answer the question if any.

    Cheers,
    Dmitry Bedrin.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.