Questa pagina ha lo scopo di fornire dettagli consolidati e rilevanti per le diverse operazioni di manutenzione sul repository AEM 6.x.

Obiettivo

Questo articolo fornisce dettagli sulle varie attività di manutenzione per AEM 6.x. La manutenzione del repository AEM Oak è fondamentale per mantenere un sistema performante.  La mancanza di manutenzione causa instabilità, problemi di prestazioni e problemi di spazio sul disco

Manutenzione di Oak Tar SegmentNodeStore

Manutenzione di Oak Mongo Storage

Manutenzione dei file binari (BLOB Store o DataStore)

Manutenzione e pulizia di Workflow

Manutenzione e pulizia delle versioni

Manutenzione e pulizia del log Audit

Attività di manutenzione per le istanze di AEM 6.x

Manutenzione del catrame di Oak Tar SegmentNodeStore

 Il SegmentNodeStore è il meccanismo di archiviazione di Oak predefinito che viene fornito con AEM. Questo livello di persistenza salva i dati come file tar in crx-quickstart/repository/segmentstore. L'archiviazione è un formato solo per applicazioni, quindi quando il contenuto viene creato, aggiornato o eliminato, i file nella cartella segmentstore diventano solo più grandi. Nel tempo, questo può influenzare le prestazioni e la stabilità di AEM. Per recuperare spazio su disco e migliorare le prestazioni, è necessario eseguire la compattazione del tar, conosciuta anche come manutenzione "Revision Cleanup".  Il Revision Cleanup può essere eseguito sia offline (con AEM non in esecuzione) che online (con AEM in esecuzione). Tuttavia, Il Cleanup online è sicuro solo per l'uso in AEM 6.3 e versioni successive. Vedi la documentazione relativa alla versione AEM:

Confronto tra compattazione offline e online

La tabella seguente fornisce un rapido riferimento sulle differenze tra il revision cleaup online e offline:

Compattazione offline Compattazione online
AEM 6.0 - 6.3 6.3 e versioni future
Tempo di inattività richiesto Nessun tempo di inattività
Esegue il cleanup di tutte le vecchie revisioni Esegue il cleanup delle revisioni prima dell
'ultima volta che è stata eseguita la compattazione online
Deve essere eseguito fino al suo completamento Viene eseguito durante il periodo di manutenzione programmata
Funziona più velocemente Prestazioni limitate dalle attività di sistema
Consigliato per l'esecuzione bisettimanale Viene eseguito tutti i giorni (predefinito 02:00 - 05:00)

Per le versioni AEM da 6.0 a 6.2, Il Revision Cleanup online deve essere disabilitato, vedi questo articolo per scoprire come. Inoltre, esistono scenari noti in cui il cleanup offline può fallire. Vedi questo articolo per evitare questi problemi e migliorare le prestazioni della compattazione offline.

Calendario raccomandato

Per AEM6.0 fino adAEM6.2, si raccomanda di eseguire la compattazione offline due volte alla settimana.  Su AEM6.3, la compattazione offline non è richiesta.  Si raccomanda invece di monitorare la compattazione online che è programmata (per impostazione predefinita) per l'esecuzione giornaliera dalle 2:00-5:00 del mattino.

Output log campione

Qui ci sono messaggi di log di esempio che mostrano l'esito positivo della Pulizia revisioni.

 

Pulizia revisioni offline per AEM6.2/Oak

Apache Jackrabbit Oak 1.4.13​
Compacting crx-quickstart/repository/segmentstore​
    before ​
        Fri Oct 14 12:19:30 EDT 2016, data00000a.tar​
        Wed May 17 10:37:46 EDT 2017, data00001b.tar​
        Fri Oct 14 12:20:22 EDT 2016, data00002a.tar​
............​
        Wed May 17 10:37:45 EDT 2017, data00011b.tar​
        Sun Jul 16 16:12:39 EDT 2017, journal.log​
        Fri Oct 14 12:19:24 EDT 2016, repo.lock​
    size 7.7 GB (7712731491 bytes)​
    -> compacting​
    -> cleaning up​
    -> removed old file data00074a.tar​
    -> removed old file data00073a.tar​
    -> removed old file data00072a.tar​
….…​
    -> removed old file data00018b.tar​
    -> writing new journal.log: a838c3e9-613f-4095-abba-939c437882e7:59384 root​
..
..
after ​
        Fri Oct 14 12:19:30 EDT 2016, data00000a.tar​
        Wed May 17 10:37:46 EDT 2017, data00001b.tar​
        .............​
        Wed May 17 10:37:46 EDT 2017, data00003b.tar​
        Wed May 17 10:37:45 EDT 2017, data00004b.tar​
       Mon Jul 17 11:11:28 EDT 2017, journal.log​
        Fri Oct 14 12:19:24 EDT 2016, repo.lock​
    size 6.4 GB (6385295920 bytes)​
    removed files [data00057a.tar, data00065a.tar, data00020b.tar, data00018b.tar, data00050b.tar, data00073a.tar, data00058a.tar, data00069a.tar, data00060a.tar, data00063a.tar, data00074a.tar, data00066a.tar, data00055a.tar, data00062a.tar, data00036b.tar, data00070a.tar, data00068a.tar, data00072a.tar, data00067a.tar, data00049b.tar, data00061a.tar, data00056a.tar, data00064a.tar, data00059a.tar]​
    added files [data00050c.tar, data00065b.tar, data00073b.tar, data00056b.tar, data00072b.tar, data00066b.tar, data00069b.tar, data00063b.tar, data00018c.tar, data00058b.tar, data00060b.tar, data00074b.tar, data00020c.tar, data00059b.tar, data00070b.tar, data00062b.tar, data00061b.tar, data00036c.tar, data00075a.tar, data00057b.tar, data00049c.tar]​
Compaction succeeded in 21.76 s (21s).​

 

Pulizia revisioni online su AEM6.3:

TarMK GC #2: started​
TarMK GC #2: …..​
TarMK GC #2: estimation started
​TarMK GC #2: estimation completed in 6.373 ms (6 ms). Segmentstore size has increased since the last garbage collection from 417.9 MB (417905664 bytes) to 844.2 MB (844169728 bytes), an increase of 426.3 MB (426264064 bytes) or 102%. This is greater than sizeDeltaEstimation=100.0 MB (100000000 bytes), so running garbage collection​
TarMK GC #2: compaction started, …​
TarMK GC #2: estimated number of nodes to compact is 442708, based on 442307 nodes compacted to 417905664 bytes on disk in previous compaction and current size of 418285056 bytes on disk.​
TarMK GC #2: compaction cycle 0 completed in 52.96 s (52956 ms). Compacted ff940e56-3a69-4721-ab80-74210b7beae9.00000034 to 8ddf7c10-1af6-41f8-aa99-6b750e09e00b.00000533​
​TarMK GC #2: ……​
TarMK GC #2: compaction succeeded in 53.07 s (53072 ms), after 1 cycles​
TarMK GC #2: cleanup started.​
TarMK GC #2: current repository size is 530.8 MB (530752512 bytes)​
….​
cleanup marking files for deletion: …….​
cleanup completed in 1.584 s (1584 ms). Post cleanup size is 223.9 MB (223906816 bytes) and space reclaimed 306.8 MB (306845696 bytes).​
Removed files: ……​
TarMK closed: …….​

Manutenzione dello spazio di archiviazione di Mongo Oak

Alcuni clienti hanno scelto di utilizzare MongoDB (DocumentNodeStore) come piattaforma di archiviazione per Oak invece di utilizzare il Tar SegmentNodeStore predefinito.  Questa piattaforma di archiviazione fornisce un'elevata disponibilità tramite il clustering delle istanze AEM.  Come per lo spazio di archiviazione Tar, tutte le scritture, incluse le eliminazioni, causano la scrittura di più dati.  Per pulire vecchie revisioni non necessarie dei dati, eseguire DocumentNodeStore Raccolta rifiuti revisioni (noto anche come "Pulizia revisioni").  Questa manutenzione è configurata per funzionare automaticamente su tutte le versioni di AEM a partire dalle 2 del mattino di ogni giorno.  Il lavoro di manutenzione per configurarlo è lo stesso della Pulizia revisioni online di Tar.

Il lavoro di manutenzione viene eseguito solo sul nodo leader del cluster AEM contro la replica primaria del cluster MongoDB.  Funziona così:

  1. Controlla se esiste un checkpoint più vecchio di 24 ore
  2. Invia una query a MongoDB per i documenti eliminati che superano l'età massima di revisione
  3. Elimina i documenti in batch
  4. Invia una query a MongoDB per documenti di revisione "divisi" che superano l'età massima di revisione
  5. Elimina i documenti in batch

Programma raccomandato

Questa manutenzione deve essere eseguita almeno una volta al giorno.  Per impostazione predefinita viene eseguita a partire dalle 2 del mattino fino al completamento.  Tuttavia, più spesso si esegue, più veloce è la sua esecuzione.  Inoltre, più spesso si esegue, migliore saranno le prestazioni di scrittura complessive di Oak.  Nota che durante l'esecuzione, influenzerà le prestazioni di MongoDB.  Si dovrebbe eseguire solo quando ci sono pochissimi utenti sul sistema.

Output log campione

L'output del rlog di esempio riportato di seguito mostra i messaggi di log di inizio e fine per una corretta esecuzione della Raccolta rifiuti di revisioni:

16.08.2017 23:38:26.521 *INFO* [sling-oak-observation-173] org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector Starting revision garbage collection. Revisions older than [2017-08-15 23:38:26.516] will be removed
16.08.2017 23:38:26.727 *INFO* [sling-oak-observation-173] org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector Proceeding to delete [2620] documents
16.08.2017 23:38:27.265 *INFO* [sling-oak-observation-173] org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector Proceeding to delete [0] previous documents
16.08.2017 23:38:27.279 *INFO* [sling-oak-observation-173] org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector Revision garbage collection finished in 766.2 ms. VersionGCStats{ignoredGCDueToCheckPoint=false, deletedDocGCCount=2620, splitDocGCCount=3, intermediateSplitDocGCCount=0, timeToCollectDeletedDocs=170.4 ms, timeTakenToDeleteDeletedDocs=561.3 ms, timeTakenToCollectAndDeleteSplitDocs=10.52 ms}

Manutenzione del file binario di Oak (BLOB)

A partire da AEM 6.3, la configurazione predefinita dello spazio di archiviazione Oak è il SegmentStore Tar con un FileDataStore configurato per l'archiviazione di file binari.  Per impostazione predefinita, un DataStore memorizza file binari di dimensioni pari o superiori a 4 KB.  In un'installazione predefinita, il datastore si trova sotto crx-quickstart/repository/datastore sul file system del server.  Questi file includono file jar, immagini, javascript, css, pacchetti, file dell'indice di Lucene e qualsiasi altro file binario caricato su AEM.  A questi file si fa riferimento all'interno delle revisioni delle proprietà dei nodi binari nel NodeStore.

Il DataStore è progettato per archiviare i file in modo univoco, il che significa che se lo stesso file viene caricato in due diverse posizioni in Oak, esso archivia un solo file.  Per questo motivo, i file non vengono mai eliminati dal datastore finché la Raccolta rifiuti di DataStore è in esecuzione.

La manutenzione BLOB GC (cioè la "Raccolta rifiuti di DataStore") si applica a archivi binari BLOB di file, S3 e Mongo su Oak.  Vedi la documentazione ufficiale per maggiori dettagli su questo argomento:

Programma raccomandato

Per impostazione predefinita, si tratta di un'operazione di manutenzione settimanale che viene eseguita il sabato mattina a partire dalle 2 del mattino fino al completamento.  Si raccomanda di eseguire questa operazione di manutenzione settimanalmente per evitare di esaurire lo spazio su disco.  Tuttavia, se i volumi di archiviazione hanno uno spazio ampio, può essere eseguita senza problemi meno frequentemente.  Senza questa manutenzione si rischia di sprecare spazio su disco.

Output log campione

L'output del log di esempio riportato di seguito mostra i messaggi di log di inizio e fine per un'esecuzione riuscita della Raccolta rifiuti di DataStore:

Starting Blob garbage collection with markOnly [false]​
Collected (1024) blob references ​
….​
Deleted blobs [……….]​
….​
Blob garbage collection completed in 4.569 s (4568 ms). Number of blobs deleted [6341] with max modification time of [2017-07-16 22:03:55.295]









Manutenzione di eliminazione del workflow

Ogni volta che un workflow viene avviato in AEM, viene creata una cronologia del workflow in /etc/workflow/instances nell'archivio di Oak.  Nel corso del tempo, i nodi della cronologia del workflow possono accumularsi e influire sulle prestazioni del sistema.  Per evitare questa situazione, è necessario eseguire la Manutenzione di eliminazione del workflow.

Vedi questa documentazione per i dettagli su come configurare ed eseguire questa operazione di manutenzione.

Programma raccomandato

Questa operazione di manutenzione deve essere eseguita su base settimanale.

Output log campione

I messaggi di log qui sotto mostrano un'esecuzione riuscita della Manutenzione di eliminazione del workflow:

*INFO* [Workflow Purge: 'DAM Workflows'] com.adobe.granite.workflow.core.mbean.WorkflowOperationsImpl Begin workflow purge with the following parameters:​
dry run: false​
days old: 0​
states: {COMPLETED, ABORTED}​
models: {/etc/workflow/models/dam/update_asset/jcr:content/model ,/etc/workflow/models/dam-xmp-writeback/jcr:content/model} purge save threshold: {20} purge query count: {1000}​
*INFO* [Workflow Purge: 'DAM Workflows'] com.adobe.granite.workflow.core.mbean.WorkflowOperationsImpl Cleaned up 1006 instances​
*INFO* [Workflow Purge: 'DAM Workflows'] com.adobe.granite.workflow.core.mbean.WorkflowOperationsImpl Finished running Workflow Purge. Purged: 1006 items.  Elapsed time (seconds): 0​
*INFO* [Workflow Purge: 'DAM Workflows'] com.adobe.granite.workflow.core.mbean.PurgeScheduler Finished running  Workflow Purge Configuration: DAM Workflows.  Purged: 1006 items.  Elapsed time (seconds): 0​

Manutenzione di eliminazione della versione

In un'installazione AEM predefinita, le versioni vengono create quando si pubblicano o si annulla la pubblicazione di pagine o risorse, si caricano o sostituiscono le risorse.  Le versioni sono archiviate come nodi in /jcr:system/jcr:versionStorage nell'archivio Oak.  Questi nodi mantengono i riferimenti ai file binari nel datastore.  Nel tempo le versioni si accumulano e questo influisce sulle prestazioni del sistema e sull'utilizzo del disco.  Gli indici di ricerca, l'archiviazione Tar o Mongo e DataStore si gonfiano di dati aggiuntivi dalle cronologie delle vecchie versioni. Per recuperare spazio su disco e le prestazioni del sistema è necessario eseguire l'eliminazione della versione.

  • Vedi questa documentazione su come configurare ed eseguire l'eliminazione della versione.
  • Vedi questo articolo per sapere come evitare problemi noti con l'eliminazione della versione.

Programma raccomandato

Questa operazione di manutenzione deve essere eseguita su base mensile.

Output log campione

L'eliminazione della versione invierà messaggi ai log solo se riesce a eliminare le versioni con successo.  Se non riesce a eliminare alcune versioni, invia un errore e continua a eliminare altre versioni.

Il messaggio di log qui sotto è un esempio di eliminazione riuscita di una versione:

INFO [pool-11-thread-10-Maintenance Queue(com/adobe/granite/maintenance/job/VersionPurgeTask)] com.day.cq.wcm.core.impl.VersionManagerImpl Purged version 1.0 of /content/geometrixx/en/jcr:content

L'errore che segue è un esempio di eliminazione non riuscita di una versione:

ERROR [pool-11-thread-10-Maintenance Queue(com/adobe/granite/maintenance/job/VersionPurgeTask)] com.day.cq.wcm.core.impl.VersionManagerImpl Unable to purge version 1.1 for /content/geometrixx/en/jcr:content : OakIntegrity0001: Unable to delete referenced node
javax.jcr.ReferentialIntegrityException: OakIntegrity0001: Unable to delete referenced node
at org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:235)
at org.apache.jackrabbit.oak.api.CommitFailedException.asRepositoryException(CommitFailedException.java:212)
at org.apache.jackrabbit.oak.jcr.version.ReadWriteVersionManager.removeVersion(ReadWriteVersionManager.java

Lucene Binaries Cleanup

By using the Lucene Binaries Cleanup task, you can purge lucene binaries and reduce the running data store size requirement. This is because the lucene's binary churn will be re-claimed daily instead of the earlier dependency on a successful data store garbage collection run.

Though the maintenance task was developed to reduce Lucene related revision garbage, there are general efficiency gains when running the task:

  • The weekly execution of the data store garbage collection task will complete more quickly
  • It may also slightly improve the overall AEM performance 

You can access the Lucene Binaries Cleanup task from: AEM > Tools > Operations > Maintenance > Daily Maintenance Window > Lucene Binaries Cleanup.

Manutenzione di eliminazione del log di controllo

In un'installazione AEM predefinita, ogni volta che le pagine o le risorse sono create/caricate, modificate, eliminate o la pubblicazione viene eliminata, vengono creati dei registri di controllo.  I log di controllo sono memorizzati come nodi sotto /var/audit nell'archivio Oak.  Nel tempo, questi nodi si accumulano e influiscono sulle prestazioni del sistema.  Per evitare questa situazione è necessario eseguire la Manutenzione dei log di controllo.

Vedi questa documentazione per i dettagli su come configurare ed eseguire la Manutenzione di eliminazione del log di controllo.

Programma raccomandato

Questa operazione di manutenzione deve essere eseguita su base mensile.

Output log campione

I messaggi di log qui sotto mostrano un'esecuzione corretta della manutenzione AuditLog:

16.08.2017 23:19:48.765 *INFO* [pool-81-thread-1] com.day.cq.audit.impl.AuditLogPurgeScheduler {name = test, type = [PageVersion Created, PageRestored, PageValid, PageMoved, PageDeleted, PageModified, PageCreated, PageInvalid, PageRolled Out], contentPath = /content, minimumAge = 5} activated
16.08.2017 23:19:48.799 *INFO* [sling-threadpool-d679d698-60cf-4039-9702-55136a780492-(apache-sling-job-thread-pool)-1-Maintenance Queue(com/adobe/granite/maintenance/job/AuditLogMaintenanceTask)] com.day.cq.audit.impl.AuditLogPurgeScheduler test - AuditLog purge starting execution
16.08.2017 23:19:48.800 *INFO* [sling-threadpool-d679d698-60cf-4039-9702-55136a780492-(apache-sling-job-thread-pool)-1-Maintenance Queue(com/adobe/granite/maintenance/job/AuditLogMaintenanceTask)] com.day.cq.audit.impl.AuditLogPurgeScheduler test - Node /var/audit/com.day.cq.wcm.core.page/content does not exist in the repository, skipping current rule execution.
16.08.2017 23:19:48.800 *INFO* [sling-threadpool-d679d698-60cf-4039-9702-55136a780492-(apache-sling-job-thread-pool)-1-Maintenance Queue(com/adobe/granite/maintenance/job/AuditLogMaintenanceTask)] com.day.cq.audit.impl.AuditLogPurgeScheduler test - AuditLog purge execution is over