Sep 19

Bewährte Vorgensweise für die Optimierung der Performance bei Webservices:

  • Gestallten Sie ihr Webservice Interface mit dem Ziel die Anzahl der Client-Requests zu reduzieren und den Netzwerkverkehr zu minimieren.
  • Das Parsen von XML-Nachrichten auf Gateways, Proxies usw. sollten soweit wie möglich reduziert werden.
  • Versuchen die Komplexität der XML Nachrichten so einfach wie möglich zu halten.
  • Unabhängig von der Verarbeitung muss jede XML Nachricht erst geparst werden. Versuchen Sie daher die Größe der Nachrichten so klein wie möglich zu halten.
  • Die Wiederverwendung von bestehenden Verbindungen wirkt sich insbesondere bei vielen kleinen Nachrichten außerordentlich positiv auf die Performance aus. Verwenden Sie daher „keep-alive“ bei HTTP Verbindungen und setzten Sie einen Connection Pool bei JMS- und Datenbank-Verbindungen ein.
  • Die Komprimierung der Daten kann sich abhängig von der Nachrichtenart und –größe positiv aber auch negativ auf die Performance auswirken. Führen Sie entsprechende Tests durch und testen Sie verschiedene Komprimierungslevels.
  • Setzen Sie moderne XML-Parser Technologien ein. StaX ist besser als SAX und SAX ist besser als DOM Parser.
  • Verwenden Sie einen schnellen XML Parser. Eine schnelle Java Implementierung ist z.B. Woodstock.
  • Nutzen Sie eine schnelle Databinding Implementierung. In der Regel liefern Frameworks, die optimierten Marshalling- und Unmarshaling-Code für Domain Klassen generieren, die beste Performance. Schnelle Implementierungen für Java Anwendungen sind JiBX, SXC und JAXB-RI.
  • Das Einlesen von XML Nachrichten in Objekte ist sehr Ressourcen intensiv. Moderne Databinding Frameworks wie JiBX oder JAXB arbeiten mit XML-Streams. Falls möglich nutzen Sie diese Möglichkeit.
  • Bei read-only Operationen bietet sich Caching als Performanceoptimierung an.
  • Security kostet Performance. Setzten Sie nur die Security-Mechanismen ein, die von einem Service wirklich benötigt werden.
  • End-to-End Security (wie z.B. WS-Security) hat in der Regel höhere Performancekosten als Transport-Schicht Security (wie z.B. SSL).

Haben Sie weitere Vorschläge für Performancetuning bei Webservices?
Ich freue mich auf Ihre Kommentare.

Aug 16

Bewährte Vorgensweise bei Exception Handling in Java:

Weitere Meinungen:

  • Bruce Eckel (”Thinking in Java”)
    Standpunkt: Checked Exceptions are not needed at all!
  • Alan Griffiths
    Standpunkt: Use unchecked exceptions with caution!

» » » »