DataStore-Speicherbereinigung

Verwenden Sie die Speicherbereinigung (Garbage Collection), um alle nicht verwendeten Dateien im Data Store zu entfernen. CRX unterstützt den Jackrabbit-Datenspeicher: http://wiki.apache.org/jackrabbit/DataStore. Standardmäßig nutzt CRX FileDataStore, aber DbDataStore wird ebenfalls unterstützt.

Ausführen der Speicherbereinigung:

  • Als Administrator anmelden
  • Klicken Sie in der CRX-Konsole auf Repository-Konfiguration.
  • Klicken Sie auf Data Store-Speicherbereinigung.
  • Wählen Sie eine oder mehrere der folgenden Optionen:
Option Beschreibung
Speicherbereinigung zuerst ausführen Um die Speicherbereinigung des Hauptspeichers zuerst auszuführen (auch bekannt als Heap-Speicherbereinigung). Dieser Prozess entfernt Objekte, die sich noch im Hauptspeicher befinden, aber nicht mehr referenziert werden. Die Speicherbereinigung (Garbage Collection) des Datenspeichers verarbeitet nur Elemente, die nicht mehr im Hauptspeicher vorhanden sind.
Nicht verwendete Elemente löschen Bei Auswahl dieser Option werden nicht benutzte Dateien aus dem Datenspeicher gelöscht. Wenn diese Option deaktiviert ist, wird nur das Datum der letzten Änderung der verwendeten Elemente aktualisiert, aber es werden keine Dateien gelöscht. Wenn mehrere eigenständige Repositories einen Datenspeicher gemeinsam nutzen oder mehrere unterschiedliche Cluster einen Datenspeicher gemeinsam nutzen, aktivieren Sie diese Option nicht. Entfernen Sie stattdessen alte Elemente manuell oder verwenden Sie ein Skript. (Löschen Sie beispielsweise Dateien, die älter als eine Woche sind, nachdem Sie die Speicherbereinigung für den Datenspeicher in jedem Repository ausgeführt haben). Ein Cluster ist ein einzelnes Repository. Das bedeutet, dass Sie „Nicht verwendete Elemente löschen“ aktivieren können, wenn Sie mehrere Instanzen verwenden, die ein Repository gemeinsam nutzen.
Verwenden Sie einen PersistenceManager-Scan Wenn diese Option aktiviert ist, verwendet der Prozess einen PersistenceManager-Scan auf niedriger Ebene, wenn der PersistenceManager diese Option unterstützt. Durch die Auswahl dieser Option wird der Speicherbereinigungsprozess beschleunigt, gleichzeitig ausgeführte Vorgänge können jedoch verlangsamt werden. Wenn die Option deaktiviert ist, wird ein Algorithmus mit einem Knotenpunkt auf höherer Ebene verwendet.
  • Klicken Sie auf Ausführen.

Speicherbereinigung in einer Clusterumgebung

Geteilter Datenspeicher

Bei Verwendung eines CRX-Clusters kann die Speicherbereinigung für den Datenspeicher von einem beliebigen Clusterknoten aus ausgeführt werden.

Cluster-Datenspeicher

Wenn Sie den Cluster-Datenspeicher (Konfigurationsoption ClusterDataStore) verwenden, führen Sie die Speicherbereinigung auf allen Clusterknoten separat aus.

Multi-Repository-Datenspeicher

Wenn mehrere verschiedene Repositories denselben Datenspeicher gleichzeitig verwenden (wie z. B. Autor- und Publishinstanzen), verwenden Sie nicht die Löschoption. Stattdessen gehen Sie wie folgt vor:

  • Sichern Sie den Datenspeicher.
  • Melden Sie sich bei CRX als Administrator an.
  • Führen Sie die Speicherbereinigung des Datenspeichers aus ohne eine der Optionen zu aktivieren (stellen Sie insbesondere sicher, dass 'Nicht verwendete Elemente löschen' nicht aktiviert ist).
  • Führen Sie dies innerhalb von fünf Tagen auf _allen_ Repositories aus, die sich einen Datenspeicher teilen. Es ist möglich, die Verzögerung auf 0 zu setzen, dies erhöht jedoch die Verarbeitungslast auf dem Dateisystem. Es ist auch möglich, den Prozess gleichzeitig auf allen Repositories auszuführen, was jedoch die I/O des Dateisystemserhöht, welches den Datenspeicher enthält. Nach dem Abschluss dieses Prozesses haben die Dateien im Datenspeicher ein neues "Zuletzt geändert"-Datum.
  • Wenn der Vorgang länger als fünf Tage dauert, erhöhen Sie die Tagesanzahl beim Löschen (Standardeinstellung: 7). Adobe empfiehlt, einen Rahmen von zwei Tagen zu verwenden.
  • Um die Dateien, die älter als sieben Tage sind, aufzulisten, nutzen Sie folgende Befehlszeile:
    find repository/datastore/* -mtime +7 -type f
  • Dieser Befehl druckt die Anzahl der Bytes, die gespeichert werden können:
    find repository/datastore/* -mtime +7 -type f -exec ls -l {} \; | awk '{ s+=$5 } END { print s }'
  • Löschen Sie alle Dateien, die älter als sieben Tage sind, mit der folgenden Befehlszeile. WARNUNG: Wenn die Speicherbereinigung (Garbage Collection) des Datenspeichers nicht innerhalb der letzten Tage ausgeführt wurde, werden noch benötigte Dateien gelöscht.
    find repository/datastore/* -mtime +7 -type f -exec rm {} \;

Speicherbereinigung in einer Anwendung starten

Um die Speicherbereinigung (Garbage Collection) manuell auszuführen, verwenden Sie folgenden Code:

GarbageCollector gc; SessionImpl si = (SessionImpl)session; gc = si.createDataStoreGarbageCollector(); // optional (wenn Sie eine(n) Fortschrittsbalken/-ausgabe implementieren möchten):
gc.setScanEventListener(this); gc.scan(); gc.stopScan(); // könnte eine separate Schaltfläche sein, wenn mehrere Repositories denselben Datenspeicher verwenden: gc.deleteUnused(); Änderungen an der Garbage Collection ab CQ5.5 (gilt für crx 2.3.15 oder höher)

Ab CQ5.5 und höheren Versionen ist das CRX, das das Repository bereitstellt, ein OSGi-Dienst. Das CRX ist in der OSGi Service Registry als MBean-Service registriert. Diese MBean steht in der JMX-Konsole zur Verfügung, die die Attribute und Operationen der Datenspeicher-Garbage Collection bereitstellt.

  • Die UI, um die Datenspeicher-Garbage Collection auszuführen, ist http://<host>:<port>/system/console/jmx/com.adobe.granite%3Atype%3DRepository
  • Die neue UI hat nur die Option „Nicht verwendete Elemente löschen“, die je nach Fall auf „true“ oder „false“ gesetzt werden kann. Ein curl-Befehlsbeispiel mit der Option auf "false "gesetzt, ist [1].
  • Die anderen Optionen
    • "Speicherbereinigung zuerst ausführen" ist nicht Teil der Datenspeicherbereinigung ui und ist verfügbar unter http://<host>:<port>/system/console/memoryusage.
    • „Persistenz-Manager-Scan verwenden“ wurde entfernt.
    • „Speicherbereinigung zuerst ausführen“ wurde zu http://<host>:<port>/system/console/memoryusage verschoben
    • Die Standardzeitverzögerung ist auf 10 festgelegt.  Ändern Sie für jede Änderung eine Bean-Eigenschaft dataStoreGarbageCollectionDelay. Der curl-Befehl für 15 wird unter [2] angezeigt.

[1] curl -u admin:admin -X POST --data delete=false -H "Referer: http://<host>:<port>/system/console/jmx/com.adobe.granite%3Atype%3DRepository" http://<host>:<port>/system/console/jmx/com.adobe.granite%3Atype%3DRepository/op/runDataStoreGarbageCollection/java.lang.Boolean

[2] curl -u admin:admin -X POST --data value=15 -H "Referer: http://<host>:<port>/system/console/jmx/com.adobe.granite%3Atype%3DRepository" http://<host>:<port>/system/console/jmx/com.adobe.granite%3Atype%3DRepository/a/DataStoreGarbageCollectionDelay

Hinweis:

AEM 5.6.1 (CRX 2.4.30+)

Die neue improvisierte Fast-Datastore-Garbage Collection wurde in 5.6.1 implementiert und ist jetzt standardmäßig aktiviert (runDataStoreGarbageCollection).  Verwenden Sie runDataStoreClassicGarbageCollection, um die Datenspeicherbereinigung auszuführen, indem Sie die Verwendung der optimierten TarPM-Speicherbereinigung vermeiden, um die alte Methode der Datenspeicherbereinigung auszuführen. 

  • Wenn Sie eine "schnelle" Speicherbereinigung (runDataStoreGarbageCollection) ausführen, vergewissern Sie sich, dass Sie sie NICHT mithilfe von stopDataStoreGarbageCollection() stoppen, bevor Sie de 5.6.1 Hotfix 3241 installiert haben (siehe untern Paketfreigabe-URL und Liesmich-Datei).

Laden Sie den Hotfix 3241 von der Paketfreigabe herunter, indem Sie hier klicken.

Herunterladen

 Adobe

Schneller und einfacher Hilfe erhalten

Neuer Benutzer?