Il processo di reindicizzazione interno dell’AEM raccoglie i dati dell’archivio e li memorizza negli indici Oak per supportare l’esecuzione di query sui contenuti. In circostanze eccezionali, il processo può diventare lento o addirittura bloccato. Questa pagina funge da guida alla risoluzione dei problemi per identificare se l’indicizzazione è lenta, individuare la causa e risolvere il problema.
È importante distinguere tra la reindicizzazione che richiede una quantità di tempo inappropriatamente lunga e la reindicizzazione che richiede una quantità di tempo molto lunga perché si tratta di indicizzare grandi quantità di contenuto. Ad esempio, il tempo necessario per indicizzare il contenuto corrisponde alla quantità di contenuto, pertanto la reindicizzazione dei grandi archivi di produzione richiede più tempo rispetto alla reindicizzazione dei piccoli archivi di sviluppo.
Consulta la Best practice per query e indicizzazione per ulteriori informazioni su quando e come reindicizzare il contenuto.
L’indicizzazione lenta del rilevamento iniziale richiede la revisione del IndexStats
Media JMX. Nell’istanza AEM interessata, effettua le seguenti operazioni:
Apri la console Web e fai clic sulla scheda JMX o vai a https://<host>:<port>/system/console/jmx (ad esempio, http://localhost:4502/system/console/jmx).
Accedi a IndexStats
Mbeans.
Apri IndexStats
MBean per " async
" e " fulltext-async
".
Per entrambi gli MBean, verifica se Fine timestamp e LastIndexTime i timestamp sono a meno di 45 minuti dall’ora corrente.
Per MBean, se il valore di ora (Fine o LastIndexedTime) è a più di 45 minuti dall'ora corrente, quindi il processo di indicizzazione non riesce o richiede troppo tempo. Questo problema fa sì che gli indici asincroni non siano aggiornati.
Un arresto forzato comporta la sospensione dell’indicizzazione asincrona da parte dell’AEM per un massimo di 30 minuti dopo il riavvio. E, in genere, sono necessari altri 15 minuti per completare la prima fase di reindicizzazione, per un totale di circa 45 minuti (rilegandosi al Rilevamento iniziale 45 minuti). Se l'indicizzazione viene sospesa dopo un arresto forzato:
In primo luogo, stabilire se l'istanza AEM è stata chiusa in modo forzato (il processo AEM è stato interrotto con la forza o si è verificato un guasto di corrente) e successivamente riavviata.
Se si è verificata la chiusura forzata, al riavvio l’AEM sospende automaticamente la reindicizzazione per un massimo di 30 minuti.
Attendere circa 45 minuti affinché l’AEM riprenda le normali operazioni di indicizzazione asincrona.
Per l’AEM 6.1, assicurare che AEM 6.1 CFP 11 è installato.
In circostanze eccezionali, il pool di thread utilizzato per gestire l’indicizzazione asincrona potrebbe subire un sovraccarico. Per isolare il processo di indicizzazione, è possibile configurare un pool di thread per evitare che altri processi AEM interferiscano con la capacità di Oak di indicizzare il contenuto in modo tempestivo. In questi casi, effettuare le seguenti operazioni:
Definisci un nuovo pool di thread isolati per Apache Sling Scheduler da utilizzare per l’indicizzazione asincrona:
Verifica che il nuovo pool di thread di Apache Sling Scheduler sia registrato e visualizzato nella console web Stato Apache Sling Scheduler.
Passa a AEM OSGi Web Console>Stato>Sling Scheduler oppure vai su https://<host>:<port>/system/console/status-slingscheduler (ad esempio, http://localhost:4502/system/console/status-slingscheduler)
Verificare che siano presenti le seguenti voci del pool:
Se vengono apportate troppe modifiche e commit all’archivio in un breve periodo di tempo, l’indicizzazione può essere ritardata a causa di una coda di osservazione completa. Innanzitutto, verifica se la coda di osservazione è piena:
Passa alla console Web e fai clic sulla scheda JMX o vai a https://<host>:<port>/system/console/jmx (ad esempio, http://localhost:4502/system/console/jmx)
Apri l’MBean delle statistiche dell’archivio Oak e determina se ObservationQueueMaxLength
è maggiore di 10.000.
per second
sezione ), in modo da verificare che ObservationQueueMaxLength
Le metriche dei secondi di sono 0.missRate
per DocChildren
cache in Consolidated Cache
Statistiche MBean.Per evitare di superare i limiti accettabili della coda di osservazione, si raccomanda di:
DiffCache
come descritto in Suggerimenti per l'ottimizzazione delle prestazioni > Ottimizzazione archiviazione Mongo > Dimensione cache documenti.La reindicizzazione può essere considerata "completamente bloccata" in due condizioni:
La reindicizzazione è lenta, al punto che nei file di registro non viene segnalato alcun progresso significativo per quanto riguarda il numero di nodi attraversati.
La reindicizzazione è bloccata in un ciclo infinito se nei file di registro vengono visualizzate eccezioni ripetute (ad esempio, OutOfMemoryException
) nel thread di indicizzazione. La ripetizione di una o più stesse eccezioni nel registro indica che Oak tenta di indicizzare ripetutamente la stessa cosa, ma non riesce per lo stesso problema.
Per identificare e correggere un processo di reindicizzazione bloccato, effettuare le seguenti operazioni:
Per identificare la causa del blocco dell’indicizzazione, è necessario raccogliere le seguenti informazioni:
Raccogli 5 minuti di immagine thread, un’immagine thread ogni 2 secondi.
Imposta livello DEBUG e registri per le appendici.
Raccogliere dati da asincrono IndexStats
MBean:
Passa a AEM OSGi Web Console>Principale>JMX>IndexStat>asincrono
Utilizzare modalità console di oak-run.jar per raccogliere i dettagli di ciò che esiste sotto il * /:async
* nodo.
Raccogliere un elenco di punti di controllo dell’archivio utilizzando CheckpointManager
MBean:
Console Web OSGi AEM>Principale>JMX>Gestione punti di controllo>listCheckpoints()
Dopo aver raccolto tutte le informazioni descritte nel passaggio 1, riavviare l'AEM.
La reindicizzazione può essere interrotta in modo sicuro (interrotta prima del completamento) tramite async, async-reindex
e f ulltext-async
corsie di indicizzazione ( IndexStats
Mbean). Per ulteriori informazioni, consulta anche la documentazione di Apache Oak su Interrompere la reindicizzazione. Inoltre, considera quanto segue:
PropertyIndexAsyncReindexMBean
.Per interrompere in modo sicuro la reindicizzazione, segui questi passaggi:
Identificare la voce MBean IndexStats che controlla la corsia di reindicizzazione che deve essere interrotta.
Passa all’MBean IndexStats appropriato tramite la console JMX, da AEM OSGi Web Console>Principale>JMX o https://<host>:<port>/system/console/jmx (ad esempio, http://localhost:4502/system/console/jmx)
Aprire la voce MBean IndexStats in base alla corsia di reindicizzazione che si desidera interrompere ( async
, async-reindex
, o fulltext-async
)
async
, async-reindex
, o fulltext-async
.Richiama abortAndPause()
comando sulla scheda appropriata IndexStats
MBean.
Contrassegna la definizione dell’indice Oak in modo appropriato per impedire la ripresa della reindicizzazione quando la corsia di indicizzazione riprende.
Durante la reindicizzazione di un esistente , impostare la proprietà reindex su false
/oak:index/someExistingIndex@reindex=false
Oppure, per un nuovo indice, ovvero:
Impostare la proprietà type su disabled
/oak:index/someNewIndex@type=disabled
o rimuovere completamente la definizione dell’indice
Al termine, esegui il commit delle modifiche nell’archivio.
Infine, riprendere l'indicizzazione asincrona sulla corsia di indicizzazione interrotta.
IndexStats
MBean che ha emesso abortAndPause()
nel passaggio 2, richiama il comando resume()
comando.È meglio reindicizzare durante i periodi di silenzio (ad esempio, non durante un caricamento di contenuti di grandi dimensioni) e idealmente durante le finestre di manutenzione quando il caricamento dell’AEM è noto e controllato. Inoltre, assicurati che la reindicizzazione non avvenga durante altre attività di manutenzione.