Felsöka Oak-index troubleshooting-oak-indexes
Långsam omindexering slow-re-indexing
AEM intern omindexeringsprocess samlar in databasdata och lagrar dem i Oak-index för att ge stöd för prestandafrågor. I undantagsfall kan processen bli långsam eller till och med fastna. Den här sidan fungerar som en felsökningsguide som hjälper dig att identifiera om indexeringen är långsam, hitta orsaken och lösa problemet.
Det är viktigt att skilja mellan omindexering som tar en otillräckligt lång tid, och omindexering som tar lång tid eftersom den indexerar stora mängder innehåll. Den tid det tar att indexera innehåll skalas till exempel med mängden innehåll, så stora produktionsdatabaser tar längre tid att indexera om än små utvecklingsdatabaser.
Mer information om när och hur du indexerar om innehåll finns i Bästa praxis för frågor och indexering.
Inledande identifiering initial-detection
Inledande identifiering av långsam indexering kräver granskning av IndexStats
JMX MBeans. Gör följande på den påverkade AEM:
-
Öppna webbkonsolen och klicka på fliken JMX eller gå till https://<host>:<port>/system/console/jmx (t.ex. http://localhost:4502/system/console/jmx).
-
Navigera till de
IndexStats
bönerna. -
Öppna
IndexStats
MBeans förasync
ochfulltext-async
. -
Kontrollera om tidsstämpeln Done och tidsstämpeln LastIndexTime är mindre än 45 minuter från den aktuella tiden för båda MBeans.
-
Om tidsvärdet (Done eller LastIndexedTime) är större än 45 minuter från den aktuella tiden i MBean misslyckas indexjobbet eller tar för lång tid. Detta problem gör att asynkrona index blir inaktuella.
Indexeringen pausas efter en tvingad avstängning indexing-is-paused-after-a-forced-shutdown
En framtvingad avstängning medför AEM asynkron indexering i upp till 30 minuter efter omstarten. Det tar normalt ytterligare 15 minuter att slutföra den första omindexeringsprocessen, under totalt cirka 45 minuter (återknytning till tidsramen Inledande identifiering på 45 minuter). Om indexering pausas efter en tvingad avstängning:
-
Börja med att kontrollera om AEM stängdes av på ett framtvingat sätt (AEM har tvångsdödats eller ett strömavbrott har inträffat) och sedan startats om.
- AEM loggning kan granskas för detta ändamål.
-
Om den framtvingade avstängningen inträffar kommer AEM automatiskt att avbryta omindexering i upp till 30 minuter vid omstart.
-
Vänta ca 45 minuter tills AEM återupptar vanliga asynkrona indexeringsåtgärder.
Trådpoolen har överlästs thread-pool-overloaded
I undantagsfall kan den trådpool som används för att hantera asynkron indexering bli överbelastad. Om du vill isolera indexeringsprocessen kan en trådpool konfigureras för att förhindra att andra AEM stör Oak förmåga att indexera innehåll i tid. I så fall gör du följande:
-
Definiera en ny isolerad trådpool för Apache Sling Scheduler som ska användas för asynkron indexering:
- På den berörda AEM-instansen går du till AEM OSGi Web Console>OSGi>Configuration>Apache Sling Scheduler eller till https://<host>:<port>/system/console/configMgr (t.ex. http://localhost:4502/system/console/configMgr)
- Lägg till en post i fältet Tillåtna trådpooler med värdet eke.
- Spara ändringarna genom att klicka på Spara längst ned till höger.
-
Kontrollera att den nya trådpoolen för Apache Sling Scheduler är registrerad och visas i webbkonsolen för Apache Sling Scheduler Status.
-
Gå till AEM OSGi Web console>Status>Sling Scheduler eller gå till https://<port>/system/console/status-slingscheduler (t.ex. http://localhost:4502/system/console/status-slingscheduler)
-
Kontrollera att följande poolposter finns:
- ApacheSlingoak
- ApacheSlingdefault
-
Observationskön är full observation-queue-is-full
Om för många ändringar och implementeringar görs i databasen på kort tid kan indexeringen fördröjas på grund av en fullständig observationskö. Kontrollera först om observationskön är full:
-
Gå till webbkonsolen och klicka på fliken JMX eller gå till https://<värd>:<port>/system/console/jmx (t.ex. http://localhost:4502/system/console/jmx)
-
Öppna MBean för Oak-databasstatistik och kontrollera om något
ObservationQueueMaxLength
-värde är större än 10 000.- I normala åtgärder måste det här maxvärdet alltid minskas till noll (särskilt i avsnittet
per second
) så verifiera attObservationQueueMaxLength
s sekundmått är 0. - Om värdena är 10 000 eller fler och ökar stadigt innebär det att minst en (eventuellt fler) kö inte kan bearbetas så fort nya ändringar (implementeringar) inträffar.
- Varje observationskö har en gräns (10 000 som standard) och om kön når den gränsen försämras hanteringen.
- När du använder MongoMK försämras prestanda för intern Oak-cache när kölängderna blir stora. Den här korrelationen kan ses i en ökad
missRate
förDocChildren
-cachen iConsolidated Cache
-statistiken i MBean.
- I normala åtgärder måste det här maxvärdet alltid minskas till noll (särskilt i avsnittet
-
För att undvika att överskrida tillåtna gränser för observationsköer bör du:
- Minska den konstanta frekvensen för implementeringar. Korta toppar i implementeringar är godtagbara, men den konstanta hastigheten bör minskas.
- Öka storleken på
DiffCache
enligt beskrivningen i Prestandajusteringstips > Justering av monolagring > Dokumentcache-storlek.
Identifiera och åtgärda en fast omindexeringsprocess identifying-and-remediating-a-stuck-re-indexing-process
Omindexering kan betraktas som"helt fast" under två förhållanden:
-
Omindexeringen är långsam, till den punkt där inga större framsteg rapporteras i loggfiler om antalet noder som har gått igenom.
- Om det t.ex. inte finns några meddelanden under en timme, eller om förloppet är så långsamt att det tar en vecka eller mer att slutföra.
-
Omindexering fastnar i en oändlig slinga om upprepade undantag visas i loggfilerna (till exempel
OutOfMemoryException
) i indexeringstråden. Upprepningen av ett eller flera undantag i loggen anger att Oak försöker indexera samma sak flera gånger, men misslyckas i samma problem.
Så här identifierar och korrigerar du en fast omindexeringsprocess:
-
För att identifiera orsaken till den fasta indexeringen måste följande information samlas in:
-
Samla 5 minuters tråddump, en tråddump varannan sekund.
-
Ange DEBUG-nivå och loggar för programtilläggen.
- org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate
- org.apache.jackrabbit.oak.plugins.index.IndexUpdate
-
Samla in data från det asynkrona
IndexStats
MBean:-
Navigera till AEM OSGi Web Console>Main>JMX>IndexStat>async
eller gå till http://localhost:4502/system/console/jmx/org.apache.jackrabbit.oak%3Aname%3Dasync%2Ctype%3DIndexStats
-
-
Använd konsolläget 🔗 för oak-run.jar för att samla in information om vad som finns under noden *
/:async
*. -
Samla in en lista med databaskontrollpunkter med
CheckpointManager
MBean:-
AEM OSGi Web Console>Main>JMX>CheckpointManager>listCheckpoints()
-
-
-
När du har samlat in all information som beskrivs i steg 1 startar du om AEM.
- Att starta om AEM kan lösa problemet om det finns en hög samtidig belastning (spill i observationskön eller något liknande).
- Om en omstart inte löser problemet kan du öppna ett problem med Adobe kundtjänst och ange all information som samlats in i steg 1.
Säkert avbrytande av asynkron omindexering safely-aborting-asynchronous-re-indexing
Omindexering kan avbrytas (stoppas innan den är slutförd) via async, async-reindex
- och f ulltext-async
-indexeringsbanorna ( IndexStats
Mbean). Mer information finns också i dokumentationen för Apache Oak om Så här avbryter du omindexering. Tänk också på följande:
- Omindexeringen av egenskapsindexen Lucene och Lucene kan avbrytas eftersom de är naturligt asynkrona.
- Omindexeringen av Oak egenskapsindex kan bara avbrytas om omindexering initierades via
PropertyIndexAsyncReindexMBean
.
Så här avbryter du omindexering:
-
Identifiera det IndexStats MBean som styr det omindexeringsintervall som måste stoppas.
-
Navigera till rätt IndexStats MBean via JMX-konsolen genom att antingen gå till AEM OSGi Web Console>Main>JMX eller https://<host>:<port>/system/console/jmx (till exempel http://localhost:4502/system/console/jmx)
-
Öppna IndexStats MBean baserat på det omindexeringsintervall som du vill stoppa (
async
,async-reindex
ellerfulltext-async
)- Titta på egenskapen async i Oak Indexes för att identifiera lämpligt intervall och därmed instansen IndexStats MBean. Egenskapen async innehåller körfältsnamnet:
async
,async-reindex
ellerfulltext-async
. - Du kan även komma åt körfältet genom att AEM Indexhanteraren i kolumnen "Async". Gå till Åtgärder > Diagnostik > Indexhanteraren om du vill öppna indexhanteraren.
- Titta på egenskapen async i Oak Indexes för att identifiera lämpligt intervall och därmed instansen IndexStats MBean. Egenskapen async innehåller körfältsnamnet:
-
-
Anropa kommandot
abortAndPause()
på lämpligIndexStats
MBean. -
Markera Oak indexdefinition så att den inte kan återindexeras när indexeringsfältet återupptas.
-
När du indexerar om ett befintligt-index ska du ange egenskapen reindex till false
/oak:index/someExistingIndex@reindex=false
-
Eller, för ett nytt-index, antingen:
-
Ange att type-egenskapen ska vara inaktiverad
/oak:index/someNewIndex@type=disabled
-
eller ta bort indexdefinitionen helt
-
Genomför ändringarna i databasen när de är klara.
-
-
Slutligen kan du återuppta asynkron indexering på det avbrutna indexeringsfältet.
- Anropa kommandot
resume()
iIndexStats
MBean som skickade kommandotabortAndPause()
i steg 2.
- Anropa kommandot
Förhindra långsam omindexering preventing-slow-re-indexing
Det är bäst att indexera om under tysta perioder (t.ex. inte under ett stort innehållsintag) och helst under underhållsperioder när AEM är känd och kontrollerad. Se även till att omindexeringen inte sker under andra underhållsaktiviteter.