Beheben des Segmentspeicherwachstums aufgrund von Groovy Console-Audit-Protokollen in AEM 6.5 (Forms und andere Lösungen)
Wenn Ihre AEM 6.5 On-Premise- oder AMS-Umgebung plötzliche Festplattenspitzen und einen schnell wachsenden TarMK-Segmentspeicher aufweist, kann ein Hochfrequenz-Vorgang mit Groovy Console zur Erstellung großer Audit-Protokoll-Knoten unter /var/groovyconsole/audit führen. Dieses Szenario trat in einer AEM Forms-Umgebung auf, kann jedoch in jedem TarMK-Setup in AEM 6.5 mit Groovy Console auftreten.
In diesem Artikel wird erläutert, wie Sie den fehlerhaften Auftrag identifizieren, seine Überwachungsknoten sicher entfernen und Speicherplatz zurückgewinnen, indem Sie die Offline-Komprimierung auf dem Segmentspeicher ausführen.
Hinweis: Dieses Szenario umfasst benutzerdefinierte Groovy-Konsolenskripte und Audit-Trails. Die Groovy-Konsole ist ein Drittanbieter-/Community-Tool und nicht Teil des standardmäßigen AEM-Produkts.
Beschreibung description
Umgebung
- Produkt: Adobe Experience Manager (AEM) 6.5 (einschließlich AEM Forms)
- Version: 6.5 Bereitstellung: On-Premise oder Adobe Managed Services (AMS) Persistenz: TarMK mit Segmentspeicher
- Betriebssystem: Linux oder Windows
Hinweise:
- Das beschriebene Problem trat in einer AEM Forms-Umgebung auf, kann jedoch in jedem TarMK-Setup in AEM 6.5 mit Groovy Console auftreten.
- Dieses Verfahren gilt nicht für AEM as a Cloud Service, da Benutzende keinen Zugriff auf den Segmentspeicher auf Dateisystemebene haben.
Problem/Symptome
In einer Adobe Experience Manager (AEM) 6.5 Forms On-Premise- oder Adobe Managed Services (AMS)-Produktionsumgebung steigt die Festplattenauslastung plötzlich und schnell an. Das crx-quickstart/repository/segmentstore-Verzeichnis wächst schnell über mehrere Tage und erreicht Hunderte von Gigabyte. Die Online-Revisionsbereinigung wird ausgeführt, kann jedoch keinen Speicherplatz zurückgewinnen. Keine aktuellen Bereitstellungen oder Konfigurationsänderungen erklären das Wachstum.
Während der Analyse werden die folgenden Symptome beobachtet:
crx-quickstart/repository/segmentstorewächst schnell auf Dutzende oder Hunderte von Gigabyte.- Die Festplattenauslastung steigt über kurze Zeiträume an, häufig an Wochenenden oder außerhalb der Geschäftszeiten.
- Die Online-Revisionsbereinigung wird ausgeführt, die Größe des Segmentspeichers wird jedoch nicht signifikant reduziert.
- Während der Wachstumsphase gibt es keine Anwendungsbereitstellungen oder Konfigurationsänderungen.
- Unter
/var/groovyconsole/audit/user/<year>sind viele Überwachungsknoten vorhanden. Diese werden von einem in Groovy Console geplanten Auftrag erstellt, der alle zwei Minuten ausgeführt wird.
Die Untersuchung zeigt, dass ein benutzerdefinierter Groovy-Konsolenauftrag, der alle paar Minuten ausgeführt werden soll, große Audit-Protokoll-Einträge unter einem benutzer- und jahresspezifischen Pfad wie /var/groovyconsole/audit/user/<year> schreibt. Diese Audit-Knoten verursachen eine Aufblähung des Repositorys und fördern das Wachstum des Segmentspeichers.
Lösung resolution
Schritt 1: Identifizieren Sie den Groovy-Konsolenauftrag, der Audit-Protokolle generiert
- Öffnen Sie CRXDE Lite auf der betroffenen AEM Forms-Instanz.
- Navigieren Sie zu dem Knoten, in dem vorhandene Groovy-Konsolenaufträge gespeichert werden, z. B. unter
/var/groovyconsole. - Suchen Sie vorhandene Aufträge mit einem kurzen Cron-Ausdruck für ein Intervall, z. B.
0 0/2 * * * ?, der alle zwei Minuten ausgeführt wird.
Anweisungen hierzu finden Sie Verwenden von CRXDE Lite im AEM as a Cloud Service-Benutzerhandbuch. Ein typischer Auftragsknoten enthält Eigenschaften, die den folgenden ähnlich sind:
jobTitle = Remove Old File AttachmentscronExpression = 0 0/2 * * * ?(wird alle 2 Minuten ausgeführt)scheduledJobId = <job-id>script = <groovy-script-body>output = <summary-of-job-output>
Wenn diese Aufträge nur Audit-Protokolle und nicht geschäftskritische Inhalte generieren, können Sie deren Audit-Knoten sicher bereinigen und den Zeitplan anpassen oder entfernen, um ein weiteres schnelles Wachstum zu verhindern. Anweisungen hierzu finden Sie unter Auditprotokollwartung in AEM 6.
Schritt 2: Groovy Console-Überwachungsknoten bereinigen
Um die Größe des Repositorys zu reduzieren, entfernen Sie die kumulierten Auditknoten unter /var/groovyconsole/audit/user/<year>. Verwenden Sie ein On-Demand-Skript für Groovy-Konsole anstelle eines neuen geplanten Auftrags, um weiteres Wachstum zu vermeiden.
Wichtig: Groovy-Konsole mit Vorsicht auf Produktionssystemen verwenden. Testen Sie Skripte immer zuerst in einer niedrigeren Umgebung, überprüfen Sie den Zielpfad und führen Sie sie unter den entsprechenden Änderungsverwaltungsverfahren aus. Anweisungen hierzu finden Sie unter Auditprotokollwartung in AEM 6 im Benutzerhandbuch zu AEM 6.5.
In diesem Szenario stammt das Wachstum von Audit-Protokoll-Knoten in Groovy Console unter einem benutzer- und jahresspezifischen Pfad, z. B.:
/var/groovyconsole/audit/user/<year>
Dieser Pfad enthält nur Auditdaten für die Groovy-Konsolenaufträge und kann problemlos entfernt werden. Passen Sie das Jahressegment im Pfad an Ihre Umgebung an.
Beispiel für Groovy-Konsolenskript:
import javax.jcr.Session
// Adjust this path to the correct audit root for your environment.
// Example: "/var/groovyconsole/audit/user/<year>"
def path = "/var/groovyconsole/audit/user/<year>"
Session s = session // Groovy Console injects a live JCR session
if (s.nodeExists(path)) {
s.getNode(path).remove()
s.save()
println "Removed audit nodes under " + path
} else {
println "No audit nodes to remove at " + path
}
Führen Sie das Skript einmal in der Produktion unter einem Benutzerkonto aus, das über ausreichende Berechtigungen zum Entfernen von Knoten unter /var/groovyconsole/audit/user/<year> verfügt. In vielen Umgebungen handelt es sich um einen administrativen oder Service-Benutzer. Die genauen Berechtigungen hängen jedoch von Ihrem internen Sicherheitsmodell ab.
Überprüfen Sie nach Abschluss des Skripts in CRXDE Lite, ob die Überwachungsknoten entfernt wurden, und vergewissern Sie sich, dass der Vorgang „Groovy Console“ nicht mehr ausgeführt wird oder mit einem weniger aggressiven Zeitplan und minimaler Protokollierung ausgeführt wird.
Schritt 3: Planen Sie Ausfallzeiten und Backups für die Offline-Komprimierung
- Planen Sie ein Wartungsfenster außerhalb der Geschäftszeiten.
- Anzeigen einer Wartungsseite oder Verwenden vorhandener Betriebsverfahren, um den Benutzerzugriff bei Bedarf zu blockieren.
- Erstellen Sie eine vollständige Sicherung der Instanz (einschließlich des AEM-Installationsverzeichnisses und des Datenspeichers), bevor Sie fortfahren. Offline-Komprimierung ändert das Repository auf der Festplatte und ist nicht einfach rückgängig zu machen. Anweisungen hierzu finden Sie unter Backups im Abschnitt Überwachung und Wartung Ihrer Adobe Experience Manager-Instanz.
- Beenden Sie die AEM Forms-Instanz sauber.
Schritt 4: Führen Sie die Offline-Revisionskomprimierung auf dem Segmentspeicher aus
Anweisungen hierzu finden Sie unter Revisionsbereinigung im Benutzerhandbuch zu AEM 6.5. Verwenden Sie eine oak-run Version, die mit Ihrem AEM 6.5 Service Pack kompatibel ist. Stellen Sie sicher, dass mindestens das Doppelte der aktuellen Segmentspeichergröße als freier Speicherplatz verfügbar ist. Führen Sie den folgenden Befehl aus dem AEM-Installationsverzeichnis auf dem Server aus, auf dem die Instanz gehostet wird:
java -Xmx16g -jar oak-run-1.22.21.jar compact ./crx-quickstart/repository/segmentstore
Überwachen Sie den Prozess, bis er erfolgreich abgeschlossen wird. Komprimierung nicht unterbrechen. Dies kann das Repository beschädigen.
Schritt 5: AEM neu starten und validieren
- AEM Forms-Instanz nach Abschluss der Komprimierung starten
- Entfernen Sie alle Wartungsseiten oder Lastenausgleichsregeln, die während der Ausfallzeit verwendet wurden.
- Überprüfen Sie, ob alle Forms-Funktionen erwartungsgemäß funktionieren (Authoring, Übermittlung, Verarbeitung, Integrationen).
- Überprüfen Sie die Größe von
crx-quickstart/repository/segmentstoreund Festplattenauslastung, um sicherzustellen, dass die Größe auf das erwartete Niveau zurückgegangen ist.
Prävention und Best Practices
- Vermeiden Sie in der Produktion hochfrequente Groovy-Konsolenaufträge. Geplante Aufträge sparsam und nur bei Bedarf einsetzen.
- Halten Sie die Auditprotokollierung für Groovy Console und andere Tools auf einer geeigneten Ebene und bereinigen Sie Auditdaten regelmäßig.
- Überwachen Sie die Größe der
segmentstoreund die Festplattenauslastung. Warnhinweise konfigurieren, wenn die Nutzung die definierten Schwellenwerte erreicht. - Führen Sie die Online-Revisionsbereinigung gemäß den Empfehlungen von Adobe aus und führen Sie bei Bedarf, insbesondere nach großen Bereinigungen, eine periodische Offline-Komprimierung durch.
- Verwenden Sie nach Möglichkeit integrierte Wartungsaufgaben und unterstützte APIs anstelle von benutzerdefinierten Skripten, die große Mengen an Auditdaten generieren.
Anmerkungen
- Löschen Sie keine Dateien manuell aus
crx-quickstart/repository/segmentstore. Das direkte Löschen von Dateien kann das Repository beschädigen und zu Datenverlust führen. - Wenn die Online-Revisionsbereinigung die Größe des Segmentspeichers nicht reduziert und der Segmentspeicher weiter wächst, überprüfen Sie die letzten benutzerdefinierten Aufträge, Skripte und Massenvorgänge, um die Quelle der Schreibaktivität zu identifizieren.
- Wenn Sie sich bezüglich der Repository-Integrität unsicher sind, verwenden Sie zunächst die dokumentierten Oak-Konsistenz- und
check-Tools in einem Klon der Umgebung und wenden Sie erst dann dieselben Schritte auf die Produktion an.