Skip to content

Performanceoptimierung Best‐Practices

Max Gerlings edited this page Nov 20, 2024 · 14 revisions

Hallo und Gruß!

Hier entsteht der Wiki-Artikel zum Thema

Performance-Optimierungen für Kitodo

auf Basis des Barcamps im Rahmen des KITODO-Praxistreffens in Marburg November 2024.

Das Barcamp-Thema entstand aus den Erfahrungen des HLA mit unzureichender Leistung und Anwendungsabbrüchen von KITODO bei der Ausführung von verschiedenen Workflows.

Während des Barcamps konnten wir zwei Bereiche lokalisieren, in denen man weitere Optimierungen hinsichtlich Leistung und damit auch Stabilität durchführen kann.

Eine Information vorab: Dies sind Best-Practies Empfehlungen(!). Diese können genau so auch für andere funktionieren, aber man sollte die Einstellung nicht ungeprüft übernehmen. Es sind eher Richtwerte, an denen sich orientiert werden kann. Diese ersetzen aber keine Tests!

Optimierungen von Hardware und Systemunterbau

Hardware (phys. oder virtuell)

Im allgemeinen gilt für Kitodo / Tomcat: RAM > CPU

größeres System (im Aufbau) mit mehreren parallelen Task (4) [am Beispiel des HLA]

  • CPU: 4
  • RAM: 32GiB
  • SWAP: 5GiB

Bei Erhöhung eines Wertes empfiehlt es sich, die anderen Werte entsprechend anzupassen. Denn zum Beispiel eine Erhöhung der CPU und der parallelen Tasks sorgt auch für einen erhöhten RAM-Verbrauch. (siehe dazu auch: TaskManager keepThreads Einstellungen)

Betriebssystem

Diese sind eher allgemein als Kitodo bezogen:

  • geringer Wert für vm.swappiness z.B. 1
  • SSD für Betriebssystem verwenden

JAVA

Elasticsearch (wenn auf gleicher VM / AIO)

Beschränken der RAM-Zuweisung an Elasticsearch:

  • Erstellen einer neuen Datei unterhalb von "/etc/elasticsearch/jvm.options.d/" z.B. mit dem Namen "ram.options"
  • Füllen der Datei mit dem folgendem Inhalt, um Elasticsearch auf 8GiB RAM zu beschränken:
-Xms8g
-Xmx8g

Hintergrund: Elasticsearch benutzt standardmäßig die Hälfte des RAMs. Bei einer größeren High-Available Clusterlösung von Elasticsearch wird dies vermutlich auch sinnvoll sein, im Kitodo-Kontext kann dies aber limitiert werden.

Datenbank

Anwendungsbezogene Optimierungen

TaskManager keepThreads Einstellungen

Workflowschritte granularer Abbilden ?

Nutzung der Stapelverarbeitung

Clone this wiki locally