Risoluzione dei problemi degli indici Oak

Re-indicizzazione lenta

AEM processo di reindicizzazione interna raccoglie i dati del repository e li memorizza negli indici Oak per supportare la query performante del contenuto. 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, trovare la causa e risolvere il problema.

È importante distinguere tra la reindicizzazione che richiede un tempo inappropriato e la reindicizzazione che richiede molto tempo perché sta indicizzando grandi quantità di contenuto. Ad esempio, il tempo necessario per indicizzare il contenuto viene ridimensionato in base alla quantità di contenuto, quindi la reindicizzazione degli archivi di produzione di grandi dimensioni richiederà più tempo rispetto ai piccoli archivi di sviluppo.

Consulta la sezione Tecniche consigliate per query e indicizzazione per ulteriori informazioni su quando e come reindicizzare il contenuto.

Rilevamento iniziale

L'indicizzazione lenta del rilevamento iniziale richiede la revisione IndexStats MBeans JMX. Nell’istanza AEM interessata, procedi come segue:

  1. Apri la console Web e fai clic sulla scheda JMX oppure vai a https://<host>:<port>/system/console/jmx (ad esempio, http://localhost:4502/system/console/jmx).

  2. Passa a IndexStats Fagioli.

  3. Apri IndexStats MBeans for " async" e " fulltext-async".

  4. Per entrambi i MBeans, controlla se il Fine timestamp e LastIndexTime le marche temporali sono inferiori a 45 minuti dall’ora corrente.

  5. Per MBean, se il valore del tempo (Fine o LastIndexedTime) è maggiore di 45 minuti dall'ora corrente, quindi il processo di indicizzazione non riesce o richiede troppo tempo. Questo causa l’obsolescenza degli indici asincroni.

L'indicizzazione viene sospesa dopo un arresto forzato

Un arresto forzato comporta AEM sospensione dell'indicizzazione asincrona per un massimo di 30 minuti dopo il riavvio e in genere richiede altri 15 minuti per completare il primo passaggio di reindicizzazione, per un totale di circa 45 minuti (collegamento al Rilevamento iniziale arco temporale di 45 minuti). Nel caso in cui si sospetti che l'indicizzazione venga sospesa dopo uno spegnimento forzato:

  1. In primo luogo, determinare se l'istanza AEM è stata chiusa in modo forzato (il processo di AEM è stato ucciso con la forza o si è verificato un guasto elettrico) e successivamente riavviata.

  2. Se l'arresto forzato si è verificato, al riavvio, AEM automaticamente sospende la reindicizzazione per un massimo di 30 minuti.

  3. Attendi circa 45 minuti per AEM riprendere le normali operazioni di indicizzazione asincrona.

Pool di thread sovraccaricato

NOTA

Per AEM 6.1, assicurati che AEM 6.1 PCP 11 è installato.

In circostanze eccezionali, il pool di thread utilizzato per gestire l'indicizzazione asincrona può diventare sovraccarico. Al fine di isolare il processo di indicizzazione, un pool di thread può essere configurato per evitare che altri lavori AEM interferiscano con la capacità di Oak di indicizzare il contenuto in modo tempestivo. A questo scopo, devi:

  1. Definisci un nuovo pool di thread isolato per Apache Sling Scheduler da utilizzare per l'indicizzazione asincrona:

    • Nell'istanza AEM interessata, accedi AEM Console Web OSGi>OSGi>Configurazione>Modulo di pianificazione Apache Sling o vai su https://<host>:<port>/system/console/configMgr (ad esempio, http://localhost:4502/system/console/configMgr)
    • Aggiungi una voce al campo "Pool di thread consentiti" con il valore di "oak".
    • Fai clic su Salva in basso a destra per salvare le modifiche.

    chlimage_1-119

  2. Verifica che il nuovo pool di thread Apache Sling Scheduler sia registrato e visualizzato nella console web Apache Sling Scheduler Satus.

    • Passa alla console Web OSGi AEM>Stato>Utilità di pianificazione Sling oppure vai a https://<host>:<port>/system/console/status-slingscheduler (ad esempio, http://localhost:4502/system/console/status-slingscheduler)

    • Verifica che siano presenti le seguenti voci del pool:

      • ApacheSlingoak
      • ApacheSlingdefault

    chlimage_1-120

La coda di osservazione è piena

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. In primo luogo, determinare se la coda di osservazione è piena:

  1. Vai 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)

  2. Apri l'MBean delle statistiche dell'archivio Oak e stabilisci se esiste ObservationQueueMaxLength è maggiore di 10.000.

    • Nelle operazioni normali, questo valore massimo deve sempre ridursi a zero (in particolare per second in modo da verificare che ObservationQueueMaxLengthLe metriche dei secondi sono 0.
    • Se i valori sono pari o superiori a 10.000 e aumentano costantemente, ciò indica che almeno una (possibilmente più) coda non può essere elaborata con la stessa velocità con cui si verificano nuove modifiche (commit).
    • Ogni coda di osservazione ha un limite (10.000 per impostazione predefinita) e, se la coda raggiunge tale limite, l’elaborazione diminuisce.
    • Quando si utilizza MongoMK, quando le lunghezze di coda aumentano, le prestazioni interne della cache Oak si riducono. Questa correlazione può essere vista in un missRate per DocChildren nella cache Consolidated Cache statistiche MBean.
  3. Per evitare di superare i limiti accettabili della coda di osservazione, si raccomanda di:

Identificazione e correzione di un processo di reindicizzazione bloccato

La reindicizzazione può essere considerata "completamente bloccata" in due condizioni:

  • La reindicizzazione è molto lenta, al punto in cui non viene riportato alcun progresso significativo nei file di log riguardo al numero di nodi attraversati.

    • Ad esempio, se non ci sono messaggi nel corso di un’ora o se il progresso è così lento che ci vorrà una settimana o più per terminare.
  • La reindicizzazione è bloccata in un ciclo infinito se nei file di log vengono visualizzate eccezioni ripetute (ad esempio, OutOfMemoryException) nel thread di indicizzazione. La ripetizione delle stesse eccezioni nel registro indica che Oak tenta di indicizzare ripetutamente la stessa cosa, ma non riesce sullo stesso problema.

Per identificare e correggere un processo di reindicizzazione bloccato, procedi come segue:

  1. Per identificare la causa dell’indicizzazione bloccata, è necessario raccogliere le seguenti informazioni:

  2. Dopo aver raccolto tutte le informazioni descritte nel passaggio 1, riavviare AEM.

    • Il riavvio del AEM può risolvere il problema nel caso di un carico concomitante elevato (overflow della coda di osservazione o qualcosa di simile).
    • Se un riavvio non risolve il problema, apri un problema con Adobe Customer Care e fornire tutte le informazioni raccolte nel passaggio 1.

Riindicizzazione asincrona interrotta in modo sicuro

La reindicizzazione può essere interrotta in modo sicuro (interrotta prima del completamento) tramite il async, async-reindexe f ulltext-async corsie di indicizzazione ( IndexStats Mbean). Per ulteriori informazioni, consulta anche la documentazione di Apache Oak su Come interrompere la reindicizzazione. Inoltre, prendere in considerazione che:

  • La reindicizzazione degli indici delle proprietà Lucene e Lucene può essere interrotta in quanto sono naturalmente asincroni.
  • La reindicizzazione degli indici delle proprietà Oak può essere interrotta solo se la reindicizzazione è stata avviata tramite il PropertyIndexAsyncReindexMBean.

Per interrompere in modo sicuro la reindicizzazione, segui questi passaggi:

  1. Identificare la MBean IndexStats che controlla la corsia di reindicizzazione che deve essere arrestata.

    • Passa alla MBean IndexStats appropriata tramite la console JMX andando alla console OSGi Web Console>Principale>JMX o https://<host>:<port>/system/console/jmx (ad esempio, http://localhost:4502/system/console/jmx)

    • Apri la MBean IndexStats in base alla corsia di reindicizzazione che desideri arrestare ( async, async-reindexoppure fulltext-async)

      • Per identificare la corsia appropriata e quindi l'istanza MBean IndexStats, controlla la proprietà "async" degli indici Oak. La proprietà "async" conterrà il nome della corsia: async, async-reindexoppure fulltext-async.
      • La corsia è disponibile anche accedendo a AEM Index Manager nella colonna "Async". Per accedere al Gestore indici, passa a Operazioni > Diagnosi>Gestione indici.

    chlimage_1-121

  2. Richiama il abortAndPause() sul comando appropriato IndexStats MBean.

  3. 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 index, imposta la proprietà reindex su false

      • /oak:index/someExistingIndex@reindex=false
    • Oppure, per un nuovo indice:

      • Imposta la proprietà type su disabled

        • /oak:index/someNewIndex@type=disabled
      • o rimuovere completamente la definizione dell'indice

    Al termine, conferma le modifiche all’archivio.

  4. Infine, riprendere l'indicizzazione asincrona sulla corsia di indicizzazione interrotta.

    • In IndexStats MBean che ha emesso il abortAndPause() nel passaggio 2, richiamare il resume()comando.

Impedire la reindicizzazione lenta

È meglio reindicizzare durante i periodi di inattività (ad esempio, non durante un caricamento di contenuti di grandi dimensioni) e idealmente durante le finestre di manutenzione quando il caricamento AEM è noto e controllato. Inoltre, assicurati che la reindicizzazione non avvenga durante altre attività di manutenzione.

In questa pagina