Untergeordnete Seiten
  • Performance-Tuning fuer Confluence
Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Wie jede Anwendung benötigt Confluence Tuning, wenn es stark 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 bietet bereits ein Update von Tomcat 5.5 und Java 5 auf Tomcat 6 und Java 6 eine Beschleunigung beim Aufrufen von Seiten um 20%.

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 sog. 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 diesem Server. Wenn das System perfekt aufgesetzt ist, kann das gut gehen. Doch tatsächlich stehen die Chancen gut, dass z.B. ein einzelner Bug in einer Anwendung nach und nach die anderen Systeme beeinflusst.

Oder wenn Confluence z.B. immer gegen Abend langsam wird, nutzt vielleicht eine andere Anwendung 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ähigkeit der IT, die Datenbank anzupassen, hat 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 Datenbankverbindungs-Pool 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 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 angeschlossen 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 bedenken Sie, 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 (DBA) zu engagieren, der die Datenbank entsprechend Ihrer spezifischen Anforderungen an Ihre Confluence-Instanz tunt.

Verfügen Sie über keinen solchen Vollzeitmitarbeiter und können 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 nun 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.

Cache-Tuning

Um die Auslastung der Datenbank zu reduzieren und viele Operationen zu beschleunigen, verfügt Confluence über einen eigenen Daten-Cache. Das Tuning der Cache-Größe kann die Confluence-Performance verbessern (wenn der Cache zu klein ist) oder den Speicher verringern (wenn der Cache zu groß ist).

Ausführliche Informationen bietet Atlassians Seite Cache Performance Tuning.

Antivirus-Software

Antivirus-Software verschlechtert die Performance von Confluence drastisch. AV-Software, die den Zugriff auf die Festplatte überwacht, ist teilweise abträglich und kann Confluence-Fehlern führen. Sie sollten Ihre AV-Software so konfigurieren, dass sie das Home-Verzeichnis, das Indexverzeichnis und alle Verzeichnisse, die mit der Datenbank zusammenhängen, ignoriert.

HTTP-Kompression aktivieren

Wenn die Bandbreite für den Flaschenhals in der Confluence-Installation verantwortlich ist, sollten Sie HTTP-Kompression aktivieren. Das kann auch sinnvoll sein, wenn eine nach außen gerichtete Instanz läuft, da Bandbreitenkosten eingespart werden.

Virtuelle Betriebssysteme

Virtuelle Umgebungen wie VMWare können CPU-Spikes verursachen. Daher sollte Confluence auf einem nativen Betriebssystem laufen. In einigen Situationen können VM-Tools zusammenbrechen, da exzessive Kontextwechsel und Unterbrechungen die JVM langsam laufen und Confluence sehr langsam starten lassen.

Performance-Tests

Sie sollten alle Konfigurationsänderungen in einem Demo-System testen. Idealerweise führen Sie Load-Tests durch und passen sie an, um Nutzerverhalten zu simulieren. Siehe hierzu Atlassians Informationen zu Performance Testing Scripts.  

Access-Logs

Durch die Aktivierung der nativen Access-Logging Funktion können Sie identifizieren, welche Seiten langsam sind und welche User sie nutzen.

Web-Server nutzen

Für Hochauslastungsumgebungen kann die Performance verbessert werden, wenn ein Web-Server wie Apache vor die Anwendung geschaltet wird. Siehe hierzu Atlassians Informationen Running Confluence behind Apache.  

Wenn Sie Ihren Web-Server konfigurieren, stellen Sie sicher, dass ausreichend Threads bzw. Prozesse konfiguriert sind, um die Belastung zu handhaben. Das betrifft sowohl den Web-Server als auch den Application-Server-Connector, der typischerweise separat konfiguriert wird. Wenn möglich, sollten Sie Connection-Pooling in Ihren Web-Server-Verbindungen zum Anwendungs-Server aktivieren.

Parallel GC

Wenn Sie mehrere CPUs auf Ihrem Server haben, können Sie -XX:+UseParallelOldGC zu Ihren JAVA_OPTS-Optionen hinzufügen. Das erlaubt die Speicherbereinigung des sog. Tendured Space parallel mit der der Anwendung und kann die Performance verbessern bzw. Slow-Performance-Spikes reduzieren. Siehe hierzu die Atlassian-Informationen zum Thema Garbage Collector Performance Issues.

Speicherlecks identifizieren

Es gibt einige externe Plugins (und hier vor allem solche, die vor langer Zeit entwickelt wurden und nicht mehr aktiv gepflegt werden), die bekanntermaßen Speicher schlucken und ihn nicht zurückgeben. Das manifestiert sich in reduzierter Performance und kann letztlich zu einem Crash führen. Siehe hierzu Troubleshooting Confluence Hanging or Crashing.

Kritische Plugins von Drittanbietern identifizieren

Confluence ist optimiert für eine hohe Belastung und viele Seiten. Einige Plugins von Drittherstellern wurden jedoch mit Blick auf kleine Unternehmen entwickelt und können nicht mit vielen gleichzeitigen Nutzern, vielen Seiten oder Berechtigungen oder zahlreichen Bereichen umgehen. Es ist unmöglich zu sagen, welches Plugin unter welchen Voraussetzungen zu Problemen führt, doch es ist immer hilfreich, alle Plugins von Drittanbietern, die nicht geschäftskritisch sind, zu deaktivieren, während Sie an der Verbesserung der Performance arbeiten.