Show Menu
ARGOMENTI×

Risoluzione dei problemi relativi agli indici Oak

Riindicizzazione lenta

Il processo di reindicizzazione interna di AEM raccoglie i dati del repository e li memorizza negli indici Oak per supportare la query dei contenuti da parte degli esecutori. 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 reindicizzazione che richiede un tempo eccessivamente lungo e reindicizzazione che richiede molto tempo, perché indicizza grandi quantità di contenuto. Ad esempio, il tempo necessario per indicizzare le dimensioni dei contenuti in base alla quantità di contenuto, pertanto i repository di produzione di grandi dimensioni richiederanno più tempo per reindicizzarsi rispetto ai repository di sviluppo di piccole dimensioni.
Per ulteriori informazioni su quando e come reindicizzare il contenuto, consultate Best Practices on Queries and Indexing (Tecniche consigliate su query e indicizzazione).

Rilevamento iniziale

L'indicizzazione lenta del rilevamento iniziale richiede la revisione degli IndexStats MBean JMX. Nell’istanza di AEM interessata, effettuate le seguenti operazioni:
  1. Aprite la console Web e fate clic sulla scheda JMX oppure andate a https://<host>:<porta>/system/console/jmx (ad esempio, http://localhost:4502/system/console/jmx ).
  2. Passate ai IndexStats fagioli.
  3. Aprite i IndexStats MBeans per " async " e " fulltext-async ".
  4. Per entrambi gli MBeans, verificate che la marca temporale Fine e LastIndexTime siano inferiori a 45 minuti dall’ora corrente.
  5. Per MBean, se il valore di tempo ( Done o LastIndexedTime ) è maggiore di 45 minuti dall'ora corrente, il processo di indice non riesce o richiede troppo tempo. Questo causa l'insufficienza degli indici asincroni.

L'indicizzazione viene messa in pausa dopo una chiusura forzata

Una chiusura forzata comporta la sospensione dell’indicizzazione asincrona da parte di AEM fino a 30 minuti dopo il riavvio, e in genere richiede altri 15 minuti per completare la prima passata di reindicizzazione, per un totale di circa 45 minuti (ricollegamento all’intervallo di tempo di rilevamento Rilevamento iniziale iniziale di 45 minuti). Nel caso in cui sospettate che l'indicizzazione venga messa in pausa dopo un arresto forzato:
  1. In primo luogo, stabilite se l’istanza di AEM è stata chiusa in modo forzato (il processo AEM è stato risolto con la forza o si è verificato un errore di alimentazione) e successivamente riavviata.
  2. Se si è verificato l’arresto forzato, al riavvio AEM sospende automaticamente la reindicizzazione per un massimo di 30 minuti.
  3. Attendete circa 45 minuti affinché AEM possa riprendere le normali operazioni di indicizzazione asincrona.

Pool di thread sovraccarico

Per AEM 6.1, accertati che sia installato AEM 6.1 CFP 11 .
In circostanze eccezionali, il pool di thread utilizzato per gestire l'indicizzazione asycronica potrebbe venire sovraccaricato. Per isolare il processo di indicizzazione, è possibile configurare un pool di thread per impedire ad altri lavori AEM di interferire con la capacità di Oak di indicizzare i contenuti in modo tempestivo. A tal fine, è necessario:
  1. Definite un nuovo pool di thread isolato per l'Utilità di pianificazione Apache Sling da utilizzare per l'indicizzazione asincrona:
    • Nell’istanza di AEM interessata, andate alla console Web di AEM OSGi>OSGi>Configuration>Apache Sling Scheduler oppure andate a https://<host>:<porta>/system/console/configMgr (ad esempio, http://localhost:4502/system/console/configMgr )
    • Aggiungete una voce al campo "Consentite Thread Pools" con il valore "Oak".
    • Fate clic su Salva in basso a destra per salvare le modifiche.
  2. Verificate che il nuovo pool di thread Apache Sling Scheduler sia registrato e venga visualizzato nella console Web Apache Sling Scheduler Satus.
    • Andate alla console Web AEM OSGi>Stato>Programmazione Sling oppure andate a https://<host>:<porta>/system/console/status-slingscheduler (ad esempio, http://localhost:4502/system/console/status-slingscheduler )
    • Verificare che siano presenti le seguenti voci del pool:
      • ApacheSlingoak
      • ApacheSlingdefault

La coda di osservazione è piena

Se in poco tempo vengono apportate troppe modifiche e impegni al repository, l'indicizzazione può essere ritardata a causa di una coda di osservazione completa. In primo luogo, determinare se la coda di osservazione è piena:
  1. Andate alla console Web e fate clic sulla scheda JMX oppure andate a https://<host>:<porta>/system/console/jmx (ad esempio, http://localhost:4502/system/console/jmx )
  2. Aprite l'MBean delle statistiche dell'archivio Oak e stabilite se un ObservationQueueMaxLength valore è maggiore di 10.000.
    • Nelle operazioni normali, questo valore massimo deve sempre essere ridotto a zero (in particolare nella per second sezione), per verificare che le metriche dei secondi ObservationQueueMaxLength siano pari a 0.
    • Se i valori sono 10.000 o più 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 (per impostazione predefinita, 10.000) e, se la coda raggiunge tale limite, l'elaborazione diminuisce.
    • Quando si utilizza MongoMK, mentre le lunghezze delle code aumentano, le prestazioni della cache Oak interna diminuiscono. Questa correlazione è visibile in un aumento missRate per la DocChildren cache nel Consolidated Cache campo MBean delle statistiche.
  3. Per evitare di superare i limiti accettabili della coda di osservazione, si raccomanda di:

Identificazione e risoluzione di un processo di reindicizzazione bloccato

La reindicizzazione può essere considerata "completamente bloccata" in due condizioni:
  • Il reindicizzazione è molto lento, al punto in cui non viene segnalato alcun progresso significativo nei file di registro riguardo al numero di nodi attraversati.
    • Ad esempio, se non ci sono messaggi nel corso di un'ora, o se l'avanzamento è così lento che ci vorrà una settimana o più per terminare.
  • La reindicizzazione viene bloccata in un ciclo infinito se nei file di registro (ad esempio OutOfMemoryException ) del thread di indicizzazione vengono visualizzate ripetute eccezioni. 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, effettuare le seguenti operazioni:
  1. Per identificare la causa dell’indicizzazione bloccata, è necessario raccogliere le seguenti informazioni:
  2. Dopo aver raccolto tutte le informazioni descritte al passaggio 1, riavviate AEM.
    • Il riavvio di AEM potrebbe risolvere il problema in caso di un carico concorrente elevato (overflow della coda di osservazione o altro).
    • Se il riavvio non risolve il problema, aprite un problema con l'Assistenza clienti Adobe e fornite tutte le informazioni raccolte nel passaggio 1.

Riindicizzazione asincrona in modo sicuro

È possibile interrompere la reindicizzazione in modo sicuro (arrestata prima del completamento) tramite le corsie di indicizzazione async, async-reindex e f ulltext-async ( IndexStats fagiolo). Per ulteriori informazioni, consulta anche la documentazione Apache Oak su Come interrompere la reindicizzazione . Inoltre, prendere in considerazione che:
  • La reindicizzazione degli indici di proprietà Lucene e Lucene può essere interrotta in quanto sono naturalmente asycronici.
  • La reindicizzazione degli indici delle proprietà Oak può essere interrotta solo se la reindicizzazione è stata avviata tramite PropertyIndexAsyncReindexMBean .
Per interrompere la reindicizzazione in modo sicuro, procedere come segue:
  1. Identificare l'MBean IndexStats che controlla la corsia di reindicizzazione da arrestare.
    • Andate a IndexStats MBean appropriati tramite la console JMX dalla console AEM OSGi Web Console>Principale>JMX oppure https://<host>:<porta>/system/console/jmx (ad esempio, http://localhost:4502/system/console/jmx )
    • Aprire il valore MBean IndexStats in base alla corsia di reindicizzazione che si desidera arrestare ( async , async-reindex o fulltext-async )
      • Per identificare la corsia appropriata e quindi l'istanza MBean IndexStats, osservare la proprietà "asincrona" degli indici Oak. La proprietà "asincrona" conterrà il nome della corsia: async , async-reindex o fulltext-async .
      • La corsia è disponibile anche accedendo a Gestione indici di AEM nella colonna "Async". Per accedere al gestore indice, passare a Operazioni>Diagnosi>Gestione indice.
  2. Richiama il abortAndPause() comando sull' IndexStats MBean appropriato.
  3. Contrassegnate la definizione dell'indice Oak in modo appropriato per impedire la ripresa della reindicizzazione quando la corsia di indicizzazione riprende.
    • Quando si reindicizza un indice esistente , impostare la proprietà reindex su false
      • /oak:index/someExistingIndex@reindex=false
    • Oppure, per un nuovo indice:
      • Impostare la proprietà type su disabled
        • /oak:index/someNewIndex@type=disabled
      • o rimuovere completamente la definizione di indice
    Al termine, inviate le modifiche alla directory archivio.
  4. Infine, riprendere l'indicizzazione asycronica sulla corsia di indicizzazione interrotta.
    • In IndexStats MBean che ha emesso il abortAndPause() comando al passaggio 2, richiamare il resume() comando.

Impedire la reindicizzazione lenta

È consigliabile reindicizzare i dati 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 carico di AEM è noto e controllato. Inoltre, accertarsi che la reindicizzazione non abbia luogo durante altre attività di manutenzione.