Letzte Woche habe ich mir unsere Produktionsdatenbank genauer angeschaut. Sie war bei 100 GB von 150 GB und wuchs kontinuierlich weiter. Der Grund: Camundas History-Tabellen. Allein ACT_HI_DETAIL belegte fast 47 GB.
Wir hatten historyTimeToLive auf 60 Tage direkt in der BPMN-Datei gesetzt. Als das konfiguriert wurde, war es in Ordnung. Inzwischen hatte sich unser Prozessvolumen etwa verundzwanzigfacht. 60 Tage History-Daten waren schlicht zu viel.
Das eigentliche Problem war aber nicht die Zahl selbst, sondern wie sie konfiguriert war. Ein Wert in der BPMN-Datei ist für alle Umgebungen gleich: Dev, Staging und Produktion bekommen alle 60 Tage, obwohl Dev keine 60 Tage braucht. Und eine Änderung erfordert einen vollständigen Deployment-Zyklus, nur um einen Konfigurationswert anzupassen.
Die Lösung ist ein Camunda Engine Plugin, das beim Start automatisch den TTL für alle Prozessdefinitionen auf einen Wert setzt, der per Umgebungsvariable konfiguriert wird. Eine Zeile in der ConfigMap, und jede Umgebung hat ihre eigene sinnvolle Einstellung. Bei uns hat das in Kombination mit einem Wechsel von FULL auf AUDIT History Level die Datenbankgröße von 104 GB auf etwa 37 GB gebracht.
Den vollständigen Artikel mit dem Plugin-Code gibt es auf Medium.