Oak 색인 문제 해결 troubleshooting-oak-indexes
느린 재인덱싱 slow-re-indexing
AEM 내부 재인덱싱 프로세스는 저장소 데이터를 수집하여 Oak 인덱스에 저장하여 컨텐츠 쿼리 성능을 지원합니다. 예외적인 상황에서 그 과정은 느리거나 막히게 될 수 있다. 이 페이지는 색인화가 느리는지 식별하고 원인을 찾고 문제를 해결하는 데 도움이 되는 문제 해결 가이드 역할을 합니다.
많은 양의 컨텐츠를 색인화하고 있기 때문에 부적절한 시간이 걸리는 재색인화와 시간이 오래 걸리는 재색인화를 구분하는 것이 중요합니다. 예를 들어 컨텐츠를 색인화하는 데 걸리는 시간이 컨텐츠 크기에 따라 조정되므로 대규모 프로덕션 리포지토리는 작은 개발 저장소보다 다시 색인화하는 데 시간이 오래 걸립니다.
자세한 내용은 쿼리 및 색인 생성에 대한 우수 사례 컨텐츠를 다시 색인화하는 시기 및 방법에 대한 추가 정보.
초기 감지 initial-detection
초기 감지 느린 색인화를 위해서는 IndexStats
JMX MBeans입니다. 영향을 받는 AEM 인스턴스에서 다음을 수행합니다.
-
웹 콘솔을 열고 JMX 탭을 클릭하거나 https://으로 이동합니다.<host>:<port>/system/console/jmx(예: http://localhost:4502/system/console/jmx).
-
로 이동합니다
IndexStats
Mbeans. -
를 엽니다.
IndexStats
"async
" 및 "fulltext-async
". -
두 MBean의 경우 완료 타임스탬프 및 LastIndexTime 타임스탬프는 현재 시간에서 45분 미만입니다.
-
두 MBean의 경우, 시간 값(완료 또는 LastIndexedTime)가 현재 시간으로부터 45분 이상인 경우 인덱스 작업이 실패하거나 너무 오래 걸립니다. 이로 인해 비동기 인덱스가 부실하게 됩니다.
강제 종료 후 색인이 일시 중지되었습니다. indexing-is-paused-after-a-forced-shutdown
강제 종료 시 다시 시작 후 최대 30분 동안 비동기 색인 지정을 일시 중단하게 되며, 일반적으로 첫 번째 재인덱싱 패스를 완료하는 데 15분이 추가로 필요하며, 총 약 45분 동안(다시 초기 감지 45분). 강제 종료 후 색인화가 일시 중지된 것으로 의심되는 경우:
-
먼저 AEM 인스턴스가 강제 방식으로 종료되었는지(AEM 프로세스가 강제로 종료되었는지 또는 전원 장애가 발생했는지) 확인한 후 다시 시작되었는지 확인합니다.
- AEM 로깅 이 목적을 위해 검토할 수 있습니다.
-
강제 종료가 발생한 경우 다시 시작 시 AEM은 최대 30분 동안 재색인을 자동으로 일시 중단합니다.
-
AEM이 일반적인 비동기 색인 작업을 다시 시작할 때까지 약 45분을 기다립니다.
스레드 풀이 오버로드됨 thread-pool-overloaded
예외적인 상황에서 비동기 인덱스화를 관리하는 데 사용되는 스레드 풀이 오버로드될 수 있습니다. 인덱싱 프로세스를 격리하기 위해 다른 AEM 작업이 Oak의 컨텐츠 인덱싱 기능을 적시에 방해하지 않도록 스레드 풀을 구성할 수 있습니다. 이렇게 하려면 다음을 수행해야 합니다.
-
비동기 색인화에 사용할 Apache Sling Scheduler에 대해 격리된 새 스레드 풀을 정의합니다.
- 영향을 받는 AEM 인스턴스에서 AEM OSGi Web Console>OSGi>구성>Apache Sling Scheduler로 이동하거나 https://으로 이동합니다.<host>:<port>/system/console/configMgr(예: http://localhost:4502/system/console/configMgr)
- "oak" 값을 사용하여 "허용된 스레드 풀" 필드에 항목을 추가합니다.
- 오른쪽 하단에 있는 저장 을 클릭하여 변경 사항을 저장합니다.
-
새 Apache Sling Scheduler 스레드 풀이 등록되어 Apache Sling Scheduler 상태 웹 콘솔에 표시되는지 확인합니다.
-
AEM OSGi 웹 콘솔>상태>Sling 스케줄러로 이동하거나 https:// 로 이동합니다.<host>:<port>/system/console/status-slingscheduler(예: http://localhost:4502/system/console/status-slingscheduler)
-
다음 풀 항목이 있는지 확인합니다.
- ApacheSlingoak
- ApacheSlingdefault
-
감시 큐가 가득 찼습니다. observation-queue-is-full
너무 많은 변경 및 커밋이 짧은 시간 내에 저장소에 수행된 경우 전체 관찰 큐로 인해 색인화가 지연될 수 있습니다. 먼저 관찰큐가 가득 찼는지 확인합니다.
-
웹 콘솔로 이동하고 JMX 탭을 클릭하거나 https://으로 이동합니다.<host>:<port>/system/console/jmx(예: http://localhost:4502/system/console/jmx)
-
Oak 저장소 통계 MBean을 열고 있는지 확인합니다.
ObservationQueueMaxLength
값이 10,000보다 큼.- 일반 작업에서는 이 최대값이 항상 0으로 감소해야 합니다(특히
per second
섹션)을 입력하여ObservationQueueMaxLength
의 초 지표는 0입니다. - 값이 10,000 이상이고 값이 꾸준히 증가하면 새 변경(커밋)이 발생할 때 하나 이상의 큐를 빠르게 처리할 수 없음을 나타냅니다.
- 각 관찰 대기열에는 제한(기본적으로 10,000개)이 있으며, 큐가 이 제한을 초과하는 경우 해당 처리는 저하됩니다.
- MongoMK를 사용할 때, 큐 길이가 크게 늘어나면 내부 Oak 캐시 성능이 저하됩니다. 이러한 상관 관계는 증가된 위치에서 볼 수 있습니다
missRate
대상DocChildren
의 캐시Consolidated Cache
통계 MBean.
- 일반 작업에서는 이 최대값이 항상 0으로 감소해야 합니다(특히
-
허용 가능한 관찰 큐 제한을 초과하지 않도록 하려면 다음을 수행하는 것이 좋습니다.
- 커밋 상수 비율을 낮춥니다. 커밋 의 짧은 스파이크는 허용되지만 상수 속도를 줄여야 합니다.
- 의 크기를 늘립니다
DiffCache
에 설명된 대로 성능 조정 팁 > Mongo Storage 조정 > 문서 캐시 크기.
중단된 재인덱싱 프로세스 식별 및 수정 identifying-and-remediating-a-stuck-re-indexing-process
재색인화는 다음 두 가지 조건에서 "완전히 정지"로 간주될 수 있습니다.
-
재색인화는 매우 느리며, 로그 파일에서 탐색된 노드 수와 관련된 중요한 진행 상태가 보고되지 않습니다.
- 예를 들어 한 시간 동안 메시지가 없거나 진행 속도가 너무 느린 경우 완료하는 데 1주일 이상 걸립니다.
-
재색인화는 로그 파일에 반복되는 예외가 나타날 경우 무한 루프가 발생합니다(예:
OutOfMemoryException
)을 포함합니다. 로그에 동일한 예외가 반복되면 Oak가 동일한 항목을 반복적으로 색인화하려고 하지만 동일한 문제에 대해서는 실패합니다.
중단된 재인덱싱 프로세스를 식별하고 수정하려면 다음을 수행합니다.
-
색인화가 중단된 원인을 식별하려면 다음 정보를 수집해야 합니다.
-
스레드 덤프 5분, 스레드 덤프 1개를 2초마다 수집합니다.
-
- org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate
- org.apache.jackrabbit.oak.plugins.index.IndexUpdate
-
비동기에서 데이터 수집
IndexStats
MBean:-
AEM OSGi Web Console>Main>JMX>IndexStat>async로 이동합니다.
-
-
사용 oak-run.jar의 콘솔 모드 * 아래에 있는 사항에 대한 세부 정보를 수집하려면
/:async
* 노드 아래에 나열됩니다. -
를 사용하여 저장소 체크포인트 목록을 수집합니다
CheckpointManager
MBean:-
AEM OSGi 웹 콘솔>주>JMX>CheckpointManager>listCheckpoints()
-
-
-
1단계에서 설명한 모든 정보를 수집한 후 AEM을 다시 시작합니다.
- AEM을 다시 시작하면 동시 로드가 높은 경우(관찰 큐 오버플로우 또는 유사한) 이 문제를 해결할 수 있습니다.
- 다시 시작해도 문제가 해결되지 않으면 고객 지원 Adobe 및 는 1단계에서 수집된 모든 정보를 제공합니다.
비동기 다시 인덱싱 중단 safely-aborting-asynchronous-re-indexing
재색인은 를 통해 안전하게 중단(완료되기 전에 중지)할 수 있습니다. async, async-reindex
및 f ulltext-async
인덱싱 레인( IndexStats
Mbean). 자세한 내용은 다음 문서를 참조하십시오. 재인덱싱 중단 방법. 또한 다음 사항을 고려하십시오.
- Lucene 및 Lucene 속성 인덱스의 재색인화는 자연스럽게 비동기적이므로 중단될 수 있습니다.
- Oak 속성 인덱스의 재색인화는 를 통해 재색인화가 입력된 경우에만 중단할 수 있습니다
PropertyIndexAsyncReindexMBean
.
재색인을 안전하게 중단하려면 다음 단계를 수행합니다.
-
중지해야 하는 재인덱싱 레인을 제어하는 IndexStats MBean을 식별합니다.
-
AEM OSGi Web Console>Main>JMX 또는 https:// 로 이동하여 JMX 콘솔을 통해 적절한 IndexStats MBean으로 이동합니다.<host>:<port>/system/console/jmx(예: http://localhost:4502/system/console/jmx)
-
중지할 색인 재지정 레인을 기반으로 IndexStats MBean을 엽니다(
async
,async-reindex
, 또는fulltext-async
)- 적절한 레인을 식별하고 따라서 IndexStats MBean 인스턴스를 식별하려면 Oak 인덱스 "async" 속성을 확인합니다. "async" 속성에는 레인 이름이 포함됩니다.
async
,async-reindex
, 또는fulltext-async
. - 레인은 "비동기" 열의 AEM 색인 관리자에 액세스하여 사용할 수도 있습니다. 인덱스 관리자에 액세스하려면 작업>진단>색인 관리자로 이동합니다.
- 적절한 레인을 식별하고 따라서 IndexStats MBean 인스턴스를 식별하려면 Oak 인덱스 "async" 속성을 확인합니다. "async" 속성에는 레인 이름이 포함됩니다.
-
-
를 호출합니다
abortAndPause()
적절한 명령IndexStats
MBean. -
인덱싱 레인이 다시 시작될 때 재색인화를 다시 시작하지 않도록 Oak 색인 정의를 적절하게 표시합니다.
-
색인화를 다시 수행할 때 기존 index, reindex 속성을 false로 설정합니다.
/oak:index/someExistingIndex@reindex=false
-
또는 기타, 새 인덱스.
-
형식 속성을 사용하지 않도록 설정합니다.
/oak:index/someNewIndex@type=disabled
-
인덱스 정의를 완전히 제거하거나
-
완료되면 변경 사항을 저장소에 커밋합니다.
-
-
마지막으로 중단된 인덱싱 레인의 비동기 색인 지정을 다시 시작합니다.
- 에서
IndexStats
를 발행한 MBeanabortAndPause()
2단계의 명령을 사용하여resume()
명령.
- 에서
느린 다시 인덱싱 방지 preventing-slow-re-indexing
AEM 로드가 알려지고 제어될 때 유지 관리 기간 중에(예: 큰 컨텐츠 수집 중에는 아님) 조용한 기간 동안 다시 색인화하는 것이 가장 좋습니다. 또한 다른 유지 관리 작업 중에 재색인화가 발생하지 않도록 하십시오.