Offline-Komprimierung für Oak – Leistung verbessern, Speicherprobleme vermeiden und Fortschritt nachverfolgen

Das Ausführen einer Offline-Tar-Komprimierung ist bei großen Oak-Repositorys langsam und löst eine OutOfMemoryException (Ausnahme wegen fehlenden Speicherplatzes) aus. Es gibt keine Möglichkeit, den Fortschritt nachzuverfolgen. In manchen Fällen wird beobachtet, dass die Repository-Größe nach Abschluss der Offline-Komprimierung angewachsen ist.

Umgebung

Adobe Experience Manager 6.x

Oak 1.2.x und 1.4.x

Lösung

Verwenden Sie den folgenden Befehl:

sudo -u crx nohup /usr/java/latest/bin/java -Dtar.memoryMapped=true -Doak.compaction.eagerFlush=true -server -Xmx30g -Dcompaction-progress-log=5000000
-Dlogback.configurationFile=logback-compaction.xml -Dcompress-interval=150000000 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dumps
-jar oak-run-1.2.16-R1750358.jar compact /path/to/segmentstore >> oak-tar-compact-a0.log 2>>oak-tar-error-a0.log

Hinweis: Oben sind einige Parameter enthalten, für die Pfade angepasst werden müssen.

In den oak-run-Versionen 1.2.17 für AEM6.1 und 1.4.4 für AEM6.2 oder höher sind einige neue Parameter enthalten:

  • -Dlogback.configurationFile=logback-compaction.xml – Protokolliert den Fortschritt der Komprimierung. Sie müssen die Datei „logback-compaction.xml“ zu dem Speicherort hinzufügen, an dem sich auch die jar-Datei von oak-run befindet.

logback-compaction.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
 
  <appender name="STDERR" class="ch.qos.logback.core.FileAppender">
    <file>/mnt/dumps/compaction.log</file>
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
 
  <logger name="org.apache.jackrabbit.oak.plugins.segment.Compactor" level="DEBUG"/>
 
  <root level="warn">
    <appender-ref ref="STDERR" />
  </root>
</configuration>
  • -Doak.compaction.eagerFlush=true – Das ist das neue Flag, das es dem Kompressor ermöglicht, persistente Transaktionen zu verwenden. Dies verhindert eine Ausnahme wegen fehlenden Speicherplatzes.

Fortschritt nachverfolgen:

compaction.log:

18:18:34.531 [main] WARN  o.a.j.o.p.segment.file.TarReader - Could not find a valid tar index in [/mnt/crx/author/crx-quickstart/repository/segmentstore/data01624a.tar], recovering...
18:18:36.569 [main] DEBUG o.a.j.oak.plugins.segment.Compactor - Eager flush enabled.
18:19:36.910 [main] DEBUG o.a.j.oak.plugins.segment.Compactor - Compacted 5000000 nodes, 1987504 properties, 57 binaries in 60328 ms.
18:22:06.905 [main] DEBUG o.a.j.oak.plugins.segment.Compactor - Compacted 10000000 nodes, 4771516 properties, 294 binaries in 149994 ms.
18:23:46.708 [main] DEBUG o.a.j.oak.plugins.segment.Compactor - Compacted 15000000 nodes, 6505235 properties, 323 binaries in 99803 ms.
18:36:38.014 [main] DEBUG o.a.j.oak.plugins.segment.Compactor - Compacted 20000000 nodes, 25559366 properties, 430789 binaries in 771305 ms.
18:40:46.736 [main] DEBUG o.a.j.oak.plugins.segment.Compactor - Compacted 25000000 nodes, 62174573 properties, 442755 binaries in 248722 ms.
18:46:51.053 [main] DEBUG o.a.j.oak.plugins.segment.Compactor - Compacted 30000000 nodes, 96729247 properties, 1040072 binaries in 364317 ms.

Schneller und einfacher Hilfe erhalten

Neuer Benutzer?