Insbesondere bei ZMS-Installationen, die schon über mehrere Jahre laufen, kann es vorkommen, dass sich die Datenbank-Größe durch die übliche ZODB-Kompression nicht mehr auf eine optimale Größe reduzieren lässt. Sollte also eine Diskrepanz zwischen der Anahl der Dokumente und dem geschätzten Erwartungswert der Datenbankgröße ergeben, so empfiehlt sich eine Analyse der Objektvolumina. Grundsätzlich ist es empfehlenswert, Binärdaten (Download-Files) aus der ZODB auszulagern und die mediafolder-Option von ZMS einzusetzen. Folgender Maßnahmen-Katalog optimiert im Allgemeinen die Systemperformance:

  1. Ermittlung großer Content-Objekte mit der analyzeSite.dtml (s. unten)
  2. Datenbank verkleinern: es ist empfehlenswert die ZODB täglich per cron-job zu komprimieren; weitere Effekte erreicht man durch
    1. Aktivierung der mediafolder-Option (schreibt alle Binaries in das Verzeichnissystem bzw. entfernt diese aus der ZODB)
    2. Workflow deaktivieren (seit ZMS 2.10 spart man damit bis zu 40% Datenvolumen), Versionierung deaktivieren bzw. Zwischenversionen löschen
    3. Identifikation bzw. Korrektur von Datenbank-Inkonsistenzen mit fsrecover.py)
    4. Ggf. Blob-Fields aktualisieren updateBlobField.dtml
  3. ZODB-Splitting: für jeden Client ein separates data.fs anlegen (Konfiguration über Zope bzw. zope.conf)
  4. Identifikation defekter Links im Content (ZMS-Aktion checklinks)
  5. ZMI-Option compact view aktivieren (reduzierte Darstellung für lange Dokument-Listen)
  6. Große Objekt-Zahlen in der Hierarchie verteilen
  7. Vereinfachung komplexer Listen-Templates

Grundsätzlich ist es empfehlenswert, die Datenbank-Kompression in relativ kurzen Zeitabständen (z.B. täglich) per cron-job zu packen. Mehr dazu unter:

Pack the Zope database from an external Cronjob on a regular basis

Für das ZODB-Recovery liefert Zope einige Tools mit, die im System-Verzeichnis /lib/python/ZODB/ liegen. Wichtig: vor der Aufführung von fsrecover.py ist die PYTHONPATH-Umgebungsvariable zu setzen (unter Linux):

www:/home/zope# export PYTHONPATH=/home/zope/lib/python
www:/home/zope# python lib/python/ZODB/fsrecover.py var/Data.fs_copy var/Data.fs_20070126_recover

Mehr dazu unter:

http://www.zope.org/Members/itamar/CorruptedZODB