DBERROR db4: Logging region out of memory

Diesen Beitrag schrieb ich 16 Jahre und 3 Wochen zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 1 Minute

Es ist zum Auswachsen: auf einem OpenExchange-Setup, das sich auf cyrus-imapd und postfix stützt und das lange, sehr lange einfach vor sich hin funktioniert hat, erscheinen plötzlich nachfolgende Meldungen im Log:

Nov  5 08:31:39 ox pop3s[6110]: DBERROR db4: Logging region out of memory; you may need to increase its size
Nov  5 08:31:39 ox pop3s[6110]: DBERROR: opening /var/lib/imap/tls_sessions.db: Cannot allocate memory
Nov  5 08:31:39 ox pop3s[6110]: DBERROR: opening /var/lib/imap/tls_sessions.db: cyrusdb error

DBERROR: xxx lockers

Parallel zu diesen Meldungen lässt sich eine enorm hohe Load auf dem System beobachten, überdurchschnittlich viele lmtpd connection-Timeouts bis hin zum völligen Stillstand des cyrus – der läuft zwar noch als Prozess, schafft es jedoch nicht mehr, auch nur ansatzweise E-Mails zu verarbeiten (in dem Moment geht dann auch die Load das Gesamtsystems nahezu auf Null). Auch interessant: nach einem Restart des Prozesses läuft eine Weile lang wieder alles wie gewünscht – in meinem Fall wurden die Intervalle bis zum nächsten Knall jedoch immer kürzer, da in der Queue immer mehr Kram auflief. Wie konnte ich den Fehler beheben?

Auf dem System handelt es sich um eine Standard-Installation, sprich: keine außergewöhnlichen Pfade und ähnliches. Also bestand der erste Schritt darin herauszufinden, welches das configdirectory des cyrus ist:

$ grep configdirectory /etc/imapd.conf
configdirectory: /var/lib/imap

In diesem /var/lib/imap findet sich ein Ordner namens db, in den ich unverzüglich hinein bewegte:

$ cd /var/lib/imap/db

Und dort habe ich ein File DB_CONFIG mit nachfolgendem Inhalt angelegt:

set_cachesize 0 2097152 1
set_lg_regionmax 2097152

Das File wird bei einem Restart des cyrus automatisch ausgewertet, und das Problem ist gelöst – einfach so. Die Fehlermeldung tauchte nicht wieder auf, das System ist sehr viel performanter.

Per Default werden nur wenige kB (256?) als Cache bereitgestellt; durch die Erhöhung der Cache-Size wurden die Plattenzugriffe deutlich reduziert!

Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: 612x 612px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „DBERROR db4: Logging region out of memory“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.