JBoss

 

Apache mod_jk - Load Balancing und Connection Pooling

mod_jk ermöglicht ein Software Load Balancing. Über Gewichtungen kann definiert werden, welche Server wie viel Traffic bekommen sollen. Die Parameter in der mod_jk Konfiguration workers.properties müßen mit den Einstellungen des integrierten Tomcat vom JBoss abgestimmt sein. Hier kann es zu zwei Problemen kommen:

  • Ist das Timeout am Apache zu kurz, dann gibt dieser bereits eine Fehlermeldung an den Webbrowser zurück, der JBoss arbeitet aber noch weiter und belegt unnötig Resourcen
  • Ist das Timeout am Apache zu lang, dann kann der Apache den Fehler nicht korrekt erkennen und gibt die Timeout Meldung vom JBoss zurück

Apache mod_expire - Browser Caching

Das Apache Modul mod_expire ermöglicht das Setzen von Expiry Headers. Das sind Informationen welche der Browser für das Caching auswertet. Die Expiry Headers können pro Mime Type gesetzt werden. Somit ist es möglich zB für alle *.gif Dateien ein Browser seitiges Caching von 60 Minuten einzustellen. Damit kann der Traffic auf die Seite reduziert werden.

JBoss mod_cluster - Adaptives Load Balancing

JBoss stellt ein eigenes Apache Modul zur Verfügung welches eine adaptive Load Balancing Strategie ermöglicht. Das Modul ermittelt über einen eigenen Kommunikationskanal welche Knoten wie stark ausgelastet sind. Anhand dieser Metrik werden die Requests dann auf die entsprechenden Knoten verteilt.

JBoss Web/Tomcat Connection Pool

Der interne Connection Pool sollte mit dem mod_jk Connection Pool abgestimmt sein. Auch hier können zwei Probleme auftauchen:

  • Ist der JBoss Web Connection Pool zu groß werden unnötig Resourcen am JBoss für die Connections im Pool verbraucht
  • Ist der JBoss Web Connection Pool zu klein müßen Request am Apache in einer Queue / Warteschleife gehalten werden

Sie sollten wissen was sie unter maxThreads, acceptCount, minSpareThreads und maxSpareThreads eintragen.

JBoss Datenbank Connection Pool

Einerseits sollte der Connection Pool mit dem Thread Pool abgestimmt werden, andererseits sollten Werte für die idle-timeout-minutes, blocking-timeout-millis, query-timeout, check-valid-connection-sql, background-validation und background-validation-minutes und prepared-statement-cache-size gesetzt werden.

JBoss Slimming

JBoss wird mit drei verschiedenen Instanzen ausgeliefert:

  • minimal
  • default
  • all

Die meisten Benutzer verwenden die default Instanz, benötigen aber nicht alle Services welche in der default Instanz mitgeliefert werden. Für den optimierten Einsatz von JBoss kann es nützlich sein Services aus der eingesetzten Instanz zu eliminieren = Slimming. Als Beispiel verwenden die wenigsten Benutzer jboss-mq bzw. jboss-messaging.

JVM Tunning

JBoss ist eine Java Applikation und wird über den Befehl java aufgerufen. Dh. JBoss läuft innerhalb einer Virtuellen Maschine der sogenannten JVM (=Java Virtual Machine). Deshalb sollte auch hier optimiert werden.

Es kann an zwei Stellen optimiert werden:

  • Speicher
  • Garbage Collector