Analisi dei problemi di indicizzazione di AEM

L’articolo fornisce indicazioni sull’analisi di query lente, sulla reindicizzazione di indici asincroni e sulla risoluzione dei problemi di indicizzazione in Adobe Experience Manager.

Descrizione description

Ambiente

Adobe Experience Manager

Problema/Sintomi

Come risolvere tutti i problemi comuni di indicizzazione?

Risoluzione resolution

Analisi delle query lente

Passando a Strumenti > Operazioni > Dashboard > Diagnosi > Prestazioni query verrà visualizzato l'elenco delle query lente.

Per informazioni dettagliate sull'analisi delle query lente, vedere questo documento.

In ambienti non di produzione, è possibile installare il pacchetto di strumenti AEM di Adobe Consulting Services (ACS) per fornire uno strumento di query esplicativo per ulteriori operazioni di debug.

Reindicizzazione degli indici asincroni

Nota: la reindicizzazione in genere non risolve i problemi relativi alle query, ad esempio le query che non restituiscono i risultati corretti. Inoltre, la reindicizzazione può richiedere molto tempo. La reindicizzazione deve essere evitata a meno che non sia coperta da uno dei motivi elencati.

Reindicizzare un indice asincrono

  • Accedi all’istanza AEM

  • Apri http://aemhost:port/crx/de/index.jsp

  • Passare alla definizione dell'indice in /oak:index

  • Imposta una proprietà booleana reindex=true sull’indice da reindicizzare, quindi salva. All’avvio dell’indicizzazione viene visualizzato un messaggio di registro simile al seguente:

    code language-none
    23.06.2015 14:26:23.070 *INFO* [ FelixStartLevel]
    org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes:
    [ /oak:index/cqAcUUID, /oak:index/nodetype, /oak:index/deviceIdentificationMode, /oak:index/campaignpath, /oak:index/active, /oak:index/jcrFrozenMixinTypes]
    
  • Mentre la reindicizzazione è in corso, l'attributo status di IndexStatsMBean avrà il valore running.

    code language-none
    23.06.2015 14:26:23.517 *INFO* [ FelixStartLevel]
    org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing Traversed #10000 /jcr:system/jcr:versionStorage/c8/5f...
    23.06.2015 14:28:51.999 *INFO* [ pool-8-thread-1]  org.apache.jackrabbit.oak.plugins.index.IndexUpdate Indexing
    report    - /oak:index/counter
    (708)    - /oak:index/authorizables
    (159)    - /oak:index/cqPageLucene
    (1913)    - /oak:index/ntBaseLucene
    (444)    - /oak:index/cqTagLucene
    (512)    - /oak:index/workflowDataLucene*(116)
    
  • È possibile confermare che l'indicizzazione è stata completata verificando il nodo di definizione dell'indice, la proprietà reindexCount deve essere stata incrementata e la reindicizzazione booleana deve essere impostata su false.

    Nel file di registro, se l’indicizzazione è stata completata correttamente, verrà visualizzata la seguente voce:

    code language-none
    23.06.2015 14:28:52.009 *INFO* [ pool-8-thread-1]
    org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Reindexing (async) completed for indexes:
    [ /oak:index/counter*(708), /oak:index/authorizables*(159),
    /oak:index/cqPageLucene*(1913), /oak:index/ntBaseLucene*(444),
    /oak:index/cqTagLucene*(512), /oak:index/workflowDataLucene*(116)]
    in 30.36 s
    
  • Se la reindicizzazione non è completa ed è entrata in un loop, vedi la sezione seguente dal titolo Analisi della reindicizzazione non riuscita.

  • L’attività dell’indice asincrono può essere identificata a livello di INFO eseguendo il comando grep su:

    code language-none
    org.apache.jackrabbit.plugins.index.IndexUpdate, and
    org.apache.jackrabbit.plugins.index.AsyncIndexUpdate
    

Problemi relativi alle prestazioni dell’indicizzazione asincrona

  1. Abilita la registrazione per convalidare la tempistica:

    Livello di TRACCIA (solo in Oak 1.0.17 o versioni successive):

    code language-none
    org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.perf
    

    Livello di DEBUG:

    code language-none
    org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate
    org.apache.jackrabbit.oak.plugins.index.IndexUpdate
    org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor
    org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker
    org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext
    org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier
    

    Vengono generati registri simili ai seguenti, che mostrano i tempi di indicizzazione:

    code language-none
    09.07.2015 08:13:38.401 *TRACE* [ 192.168.193.1 [ 1436444018387]  POST /content/dam/site/test.createasset.html HTTP/1.1]  org.apache.jackrabbit.oak.jcr.operations.writes [ session-101777]  Adding node [ /content/dam/site/test/jackrabbit-oak7.png]
    
    
    09.07.2015 08:13:38.583 *TRACE* [ 192.168.193.1 [ 1436444018387]  POST /content/dam/site/test.createasset.html HTTP/1.1]  org.apache.jackrabbit.oak.jcr.operations.writes [ session-101777]  save
    
    
    09.07.2015 08:13:42.823 *DEBUG* [ pool-9-thread-1]  org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate Running background index task async
    
    
    09.07.2015 08:13:42.963 *TRACE* [ pool-9-thread-1]  org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor [ /oak:index/lucene]  Indexed document for /content/dam/site/test/jackrabbit-oak7.png/jcr:content/related is Document<stored,indexed,omitNorms,indexOptions=DOCS_ONLY<:path:/content/dam/site/test/jackrabbit-oak7.png/jcr:content/related> indexed,tokenized<:fulltext:related>>
    
    
    09.07.2015 08:13:43.579 *DEBUG* [ pool-9-thread-1]  org.apache.jackrabbit.oak.plugins.index.IndexUpdate Indexing report
    - /oak:index/siteDamIndex(2)
    - /oak:index/lucene(15)
    
    
    09.07.2015 08:13:43.779 *TRACE* [ oak-lucene-0]  org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.perf [ /oak:index/siteDamIndex]  Index found to be updated. Reopening the IndexNode [ took 150ms]
    
    
    09.07.2015 08:13:45.248 *TRACE* [ oak-lucene-0]  org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier.perf [ /oak:index/lucene]  Copied 0 files totaling 0 B [ took 1465ms]
    
    
    09.07.2015 08:13:45.248 *TRACE* [ oak-lucene-0]  org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier [ /oak:index/lucene]  opening remote only file segments.gen
    
    
    09.07.2015 08:13:45.361 *TRACE* [ oak-lucene-0]  org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker.perf [ /oak:index/lucene]  Index found to be updated. Reopening the IndexNode [ took 1581ms]
    
  2. Acquisisci una serie di immagini thread e cerca il thread contenente AsyncIndexUpdate nello stack per vedere dove viene impiegato il tempo di indicizzazione o se l’indicizzazione è in attesa su altri thread. Per acquisire le immagini thread, consulta questo articolo.

  3. Impostare la proprietà booleana saveDirectoryListing=true (solo se si utilizza Oak 1.0.16, se la versione successiva non è necessaria) e impostare la proprietà excludedPaths=[ /var, /etc/workflow/instances, /jcr:system] sull'indice OOTB /oak:index/lucene per ottimizzarlo.

  4. Fare clic su Salva tutto.

  5. Quando crei indici personalizzati con proprietà Lucene, assicurati di impostare saveDirectoryListing=true (Boolean) se utilizzi Oak 1.0.16 e di impostare la proprietà includedPaths (String[ ] ) per limitare l'indicizzazione solo a determinati percorsi.

  6. Vai a questo URL /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService Copia in lettura, Copia in scrittura (solo sicuro da utilizzare in Oak 1.0.18 e versioni successive) e "Preacquisire i file di indice" (solo in Oak 1.0.18 e versioni successive)

Analisi della reindicizzazione non riuscita

  1. Quando l'indicizzazione asincrona ha esito negativo e verifichi le statistiche dell'indicizzatore asincrono nell'interfaccia utente di JMX (collegamento qui sotto), noterai che LastIndexedTime è una data e un'ora precedenti: http://localhost:4502/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D11%2Cname%3D"async"%2Ctype%3D"IndexStats"

  2. Quando la reindicizzazione non riesce, entra in un loop simile al seguente:

    code language-none
    08.01.2015 01:22:04.474 *INFO* [ pool-9-thread-2]
    org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes
    [ /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified] 08.01.2015 01:52:08.365 *INFO* [ pool-9-thread-5]
    org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes
    [ /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified] 08.01.2015 09:33:23.306 *INFO* [ pool-9-thread-5]
    org.apache.jackrabbit.oak.plugins.index.IndexUpdate Reindexing will be performed for following indexes
    [ /oak:index/damFileSize, /oak:index/lucene, /oak:index/cqLastModified]
    
  3. Se visualizzi questo codice, abilita la registrazione a livello di debug per org.apache.jackrabbit.oak.plugins.index

  4. Al successivo loop dell’indicizzazione con relativo messaggio di registro, verrà visualizzato anche un messaggio di registro di debug nella parte superiore con ulteriori dettagli sul motivo del fallimento dell’indicizzazione. Quindi puoi risolvere il problema, che sia un nodo corrotto, un BLOB mancante o un altro problema.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f