목표

이 문서의 목적은 모든 일반적인 색인화 문제를 해결하는 방법에 대해 자세히 설명하는 것입니다. 

느린 쿼리 분석

도구 -> 작업 -> 대시보드 -> 진단 -> 쿼리 성과로 이동하면 느린 쿼리 목록이 표시됩니다.  

느린 쿼리 분석에 대한 자세한 내용은 이 문서를 참조하십시오. 

비프로덕션 환경에서는 ACS AEM 도구 패키지를 설치하여 추가 디버깅을 위한 쿼리 설명 도구를 제공할 수 있습니다. 이 도구에 대해서는 문서를 참조하십시오.

비동기 색인 재색인화

비동기 색인을 재색인화하는 방법

  • http://aemhost:port/crx/de/index.jsp 웹용 앱을 열고 관리자로 로그인합니다.
  • /oak:index 아래에서 색인 정의를 찾습니다.
  • 부울 속성 reindex=true를 설정합니다. 색인화가 시작되면 다음과 같은 로그 메시지가 표시됩니다. 

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]

  •  재색인화가 진행되는 동안 'leader' 클러스터 노드에서 IndexStatsMBean의 'status' 특성은 'running' 값을 갖습니다.
 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)
  • 색인 정의 노드에서 색인화가 성공적으로 완료된 경우 reindexCount 속성이 증가하고 재색인 부울이 false이므로 색인화가 완료되었음을 확인할 수 있습니다.
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
  • 재색인화가 완료되지 않고 루프에 들어가면 아래 섹션을 참조하십시오.

비동기 색인화 활동은 org.apache.jackrabbit.plugins.index.IndexUpdate 및 org.apache.jackrabbit.plugins.index.AsyncIndexUpdate에서 그렙하여 INFO 레벨에서 확인할 수 있습니다.

비동기 색인화 성능 문제

  • 로깅을 사용하여 타이밍 확인:

추적 수준(Oak 1.0.17 이상에서만):

org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.perf

디버그 수준:

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

색인화 타이밍을 표시한 다음과 같은 로그가 생성됩니다.

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]

  • 시리즈 스레드 덤프를 가져와서 스택에서 AsyncIndexUpdate가 포함된 스레드를 검색하여 색인화 시간이 가장 많이 걸린 위치 또는 색인화가 다른 스레드에서 대기 중인지 여부를 확인합니다. 스레드 덤프를 가져오려면 이 문서를 참조하십시오.
  • 부울 속성 saveDirectoryListing=true를 설정하고(Oak 1.0.16을 사용하는 경우, 이후 버전이 필요하지 않은 경우에만 해당) /oak:index/lucene OOTB 인덱스를 최적화하도록 excludedPaths=[/var, /etc/workflow/instances, /jcr:system] 속성을 설정합니다.
  • "모두 저장"을 클릭합니다.
  • 사용자 정의 lucene 속성 색인을 만들 때 Oak 1.0.16을 사용하는 경우 saveDirectoryListing=true (Boolean)를 설정하고, 색인을 색인 특정 경로로만 제한하도록 includedPaths (String[]) 속성을 설정합니다.

다음 URL로 이동합니다. /system/console/configMgr/org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProviderService "읽을 때 복사", "쓸 때 복사"(Oak 1.0.18 이상에서 사용하기에만 안전함) 및 "인덱스 파일 미리 가져오기"(Oak 1.0.18 이상에서만 사용 가능)

실패한 재색인화 분석

  • 비동기 색인화가 실패하면 비동기 인덱서 통계 JMX UI(아래 링크)를 확인할 때 LastIndexedTime이 이전 날짜 및 시간임을 알 수 있습니다.

http://localhost:4502/system/console/jmx/org.apache.jackrabbit.oak%3Aid%3D11%2Cname%3D"async"%2Ctype%3D"IndexStats"

  • 또한 재색인화가 실패하면 다음과 같은 루프에 들어갑니다.

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]

  • 이 경우 org.apache.jackrabbit.oak.plugins.index에 대한 디버그 수준 로깅을 활성화해야 합니다.
  • 다음에 색인화가 위의 로그 메시지와 함께 반복되면 그 위에 있는 디버그 로그 메시지에 색인화가 실패한 이유에 대한 자세한 설명이 제공됩니다.  그러면 문제가 손상된 노드이든, 누락된 BLOB이든, 다른 문제이든 간에 그 문제를 해결할 수 있습니다.

이 작업에는 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License의 라이센스가 부여되었습니다.  Twitter™ 및 Facebook 게시물은 Creative Commons 약관을 적용받지 않습니다.

법적 고지 사항   |   온라인 개인 정보 보호 정책