Performance-Tuning-Tipps für Confluence (Teil 1)

confluence_logoWie jede Anwendung benötigt Confluence Tuning, wenn es stark und von vielen Usern genutzt wird. Confluence bietet unter vielen Konfigurationen eine gute Performance, doch es gibt keine spezifische Konfiguration, die für die beste Performance sorgt. Dies sind einige grundsätzliche Hinweise, die im Einzelfall helfen, Performance-Schwächen zu reduzieren und Ausfallrisiken zu begrenzen.

Immer die letzten Versionen der eingesetzten Tools verwenden

Nutzen Sie immer die aktuellen Versionen ihrer Anwendungs-Server und Java-Laufzeitumgebungen. Neuere Versionen sind in aller Regel performanceoptimiert. So bieten bereits Updates von Tomcat und Java oftmals eine signifikante Beschleunigung beim Aufrufen von Seiten.

Swapping aufgrund von zu wenig Arbeitsspeicher vermeiden

Achten Sie stets auf Swapping-Aktivität auf Ihrem Server. Steht nicht genug Arbeitsspeicher zur Verfügung, kann der Server damit anfangen, einige Confluence-Daten auf die Festplatte auszulagern. Das verlangsamt die Speicherbereinigung der JVM und verschlechtert die Confluence-Performance.

Bei geclusterten Installationen kann Swapping zu einer sogenannten Cluster Panic aufgrund von Performance-Problemen führen, da Swapping die JVM während der Speicherbereinigung pausieren lässt. Das kann die Kommunikationen zwischen den Knoten unterbrechen, die nötig ist, um die Cluster-Knoten zu synchronisieren.

Vorsicht bei Systemen, die in derselben Infrastruktur laufen

Es mag verführerisch klingen: Nur ein mächtiger Server hostet Ihren Datenbank- und/oder Anwendungs-Server und alle wichtigen Anwendungen laufen auf dieser Hardware. Wenn das System perfekt aufgesetzt ist, kann das funktionieren. Doch tatsächlich stehen die Chancen gut, dass zum Beispiel ein einzelner Bug in einer Anwendung nach und nach die anderen Systeme beeinflusst. Ein anderes Szenario: Wenn Confluence beispielsweise immer gegen Abend langsam wird, nutzt vielleicht eine andere Anwendung zu diesem Zeitpunkt die gemeinsame Datenbank, um komplexe Berichte zu generieren.

Grundsätzlich sollte sichergestellt werden, dass Anwendungen sich nicht gegenseitig beeinflussen, vor allem wenn sie sich dieselbe Infrastruktur teilen. Der bessere Weg besteht immer darin, sie in separate Instanzen umzuziehen, die sich besser kontrollieren lassen.

Wahl der Datenbank

Die integrierte Datenbank, die mit Confluence ausgeliefert wird, dient nur zu Evaluationszwecken und ist nicht für Produktivinstanzen vorgesehen. Nach der Evaluation müssen Sie auf ein externes relationales Datenbankmanagementsystem umsteigen. Grundsätzlich empfiehlt Atlassian kein bestimmtes RDBMS. Die Fähigkeiten der IT, die Datenbank anzupassen, haben deutlich stärkere Auswirkungen als die Wahl der Datenbank selbst.

Datenbankverbindungspool

Wenn die Auslastung von Confluence hoch ist, sind mehrere simultane Verbindungen zur Datenbank sinnvoll.

  • Wenn Sie JNDI-Datenquellen nutzen, erfolgt die Einrichtung über die Konfigurationsdateien des Anwendungs-Servers.
  • Wenn Confluence so konfiguriert ist, dass es direkt auf die Datenbank zugreift, müssen Sie das Objekt hibernate.c3p0.max_size in der Datei confluence.cfg.xml im Confluence-Home-Verzeichnis manuell editieren. Nach der Änderung der URL in dieser Datei starten Sie Confluence neu.

Um herauszufinden, ob Sie Ihren Datenbankverbindungspool tunen müssen, bieten sich Thread Dumps während unterschiedlicher Zeiten inklusive Peak-Nutzung an. Achten Sie dann darauf, wie viele Threads konkurrierende Datenbankverbindungen haben.

Datenbanken und Latenz

Wenn Confluence langsam läuft, ist eine der häufigsten Ursachen das Auftreten eines Flaschenhalses in der oder im Umfeld der Datenbank. Zunächst sollten Sie das Feld "Database Latency" hinter dem System-Information-Tab in der Admin-Konsole überprüfen.

Die Latenz wird berechnet, indem einfache Anfragen an die Datenbank gesendet werden, die eine Tabelle abfragen, die nur aus einer Spalte und einer Zeile besteht ("select * from CLUSTERSAFETY"). Normalerweise sollte diese Abfrage sehr schnell vonstatten gehen und innerhalb von 1 bis 2 Millisekunden abgeschlossen sein. Liegt der Wert zwischen 3 und 5 ms, kann es bereits ein Problem geben. Bei einem Wert über 10 ms besteht definitiv Handlungsbedarf.

Einige Millisekunden klingen zunächst nicht dramatisch, doch man muss bedenken, dass Confluence etliche Datenbankabfragen pro Seitenaufruf stellt, die zudem wesentlich komplexer sind. Eine hohe Latenz kann für alle möglichen Probleme verantwortlich sein (langsames Netzwerk, langsame Datenbank, Verbindungspoolkonflikte usw.). Sie sollte also in jedem Fall auf unter 2 ms reduziert werden.

Datenbank-Indizes

Insbesondere wenn Sie mehr als ein paar Tausend aktive User haben und alle naheliegenden Maßnahmen getroffen wurden, die Datenbank jedoch nach wie vor unter hoher Auslastung zu stehen scheint, kann es sinnvoll sein, einen Datenbankadministrator zu engagieren, der die Datenbank entsprechend Ihrer spezifischen Anforderungen an Ihre Confluence-Instanz tunt.

Verfügen Sie über keinen solchen Vollzeitmitarbeiter und können/möchten auch nicht auf einen externen Spezialisten zurückgreifen, sollten Sie sich den Database Indexing Advice ansehen, den Atlassian auf der Basis von Kunden-Reports und eigenen Erfahrungen entwickelt hat. Die Anleitungen auf dieser Seite wurden für Oracle erstellt, doch die meisten dieser Indizes können auf andere Datenbanken angewendet werden.

(Diese Datenbank-Indizes werden inzwischen zwar automatisch erstellt, wenn Confluence installiert wird, doch Upgrades bestehender Installationen auf eine jüngere Version können es nötig machen, sie noch manuell hinzuzufügen.)

Datenbankanalyse und Query-Analyse

Moderne Datenbanken bringen Abfrageoptimierer mit, die auf gesammelten Statistiken der aktuellen Daten basieren. Die Anweisung SQL EXPLAIN bietet Ihnen Informationen darüber, wie gut der Abfrageoptimierer arbeitet.

Möglicherweise möchten Sie auch eine Statistiksammlung in der Datenbank anstoßen. Der exakte Befehl hängt von Ihrer Datenbank und der Version ab. In der Regel können Sie die Statistiksammlung durchführen, während Confluence läuft, doch aufgrund der erhöhten Auslastung der Datenbank ist es sinnvoll, dies außerhalb der Kernarbeitszeiten zu tun.

Weitere Tuning-Tipps gibt es im zweiten Artikel zum Thema.

Weiterführende Infos

Haben Sie Fragen zum Betrieb Ihrer Atlassian-Anwendungen? Möchten Sie Performance, Stabilität und Sicherheit Ihrer Instanzen verbessern? Dann sprechen Sie uns unverbindlich an: Die erfahrenen Systemadministratoren von //SEIBERT/MEDIA beraten Sie gerne individuell und unterstützen Sie dabei, Leistungsfähigkeit und Hochverfügbarkeit Ihrer Systeme zu erreichen und die Voraussetzungen für eine effiziente Nutzung auch in großen Umgebungen zu schaffen.

//SEIBERT/MEDIA ist Atlassian Enterprise Expert
Confluence auf Windows- oder Linux-Servern betreiben?
Cluster für Atlassian-Anwendungen für große Umgebungen