AEM 6.5(Forms 및 기타 솔루션)의 Groovy Console 감사 추적으로 인한 세그먼트 저장소 증가 문제 해결
AEM 6.5 온프레미스 또는 AMS 환경에 갑작스러운 디스크 스파이크와 빠르게 증가하는 TarMK 세그멘테이션 저장소가 있는 경우, 빈도가 높은 Groovy 콘솔 작업이 /var/groovyconsole/audit 아래에 큰 감사 추적 노드를 만들 수 있습니다. 이 시나리오는 AEM Forms 환경에서 관찰되었지만 Groovy 콘솔을 사용하는 모든 AEM 6.5 TarMK 설정에서 발생할 수 있습니다.
이 문서에서는 세그먼트 저장소에서 오프라인 압축을 실행하여 문제가 되는 작업을 식별하고 감사 노드를 안전하게 제거하며 디스크 공간을 회수하는 방법을 설명합니다.
참고: 이 시나리오에는 사용자 지정 Groovy 콘솔 스크립트와 감사 추적이 포함됩니다. Groovy Console은 타사/커뮤니티 툴링이며 표준 AEM 제품의 일부가 아닙니다.
설명 description
환경
- 제품: Adobe Experience Manager(AEM) 6.5(AEM Forms 포함)
- 버전: 6.5 배포: 온-프레미스 또는 Adobe Managed Services(AMS) 지속성: segmentstore가 있는 TarMK
- 운영 체제: Linux 또는 Windows
참고:
- 설명된 문제는 AEM Forms 환경에서 관찰되었지만 Groovy Console을 사용하는 AEM 6.5 TarMK 설정에서 발생할 수 있습니다.
- 사용자에게 segmentstore에 대한 파일 시스템 수준 액세스 권한이 없으므로 이 절차는 AEM as a Cloud Service에 적용되지 않습니다.
문제/증상
Adobe Experience Manager(AEM) 6.5 Forms 온프레미스 또는 Adobe Managed Services(AMS) 프로덕션 환경에서는 디스크 사용량이 급격하게 증가하고 있습니다. crx-quickstart/repository/segmentstore 디렉터리는 며칠 동안 빠르게 증가하여 수백 GB에 이릅니다. 온라인 수정 정리 가 실행되지만 공간을 다시 확보할 수 없습니다. 최근 배포 또는 구성 변경으로 인한 증가 문제가 없습니다.
분석 중에 다음과 같은 증상이 관찰됩니다.
crx-quickstart/repository/segmentstore은(는) 수십 또는 수백 기가바이트로 빠르게 증가합니다.- 디스크 사용량은 짧은 기간 동안 급증하며, 주로 주말이나 휴무에 발생합니다.
- 온라인 수정 버전 정리가 실행되지만 세그먼트 저장소 크기가 크게 줄어들지는 않습니다.
- 증가하는 기간 동안 애플리케이션 배포나 구성 변경은 없습니다.
/var/groovyconsole/audit/user/<year>에 2분마다 실행되는 Groovy Console 예약 작업에 의해 만들어진 감사 노드가 많이 있습니다.
조사 결과, 몇 분마다 실행되도록 예약된 사용자 정의 Groovy 콘솔 작업이 /var/groovyconsole/audit/user/<year>과(와) 같은 사용자 및 연도별 경로에 대규모 감사 추적 항목을 작성하는 것으로 나타났습니다. 이러한 감사 노드는 저장소 증가를 야기하고 세그먼트 저장소 증가를 유도합니다.
해결 방법 resolution
1단계: 감사 추적을 생성하는 Groovy 콘솔 작업 식별
- 영향을 받는 AEM Forms 인스턴스에서 CRXDE Lite을 엽니다.
- 기존 Groovy 콘솔 작업을 저장하는 노드(예:
/var/groovyconsole아래)를 찾습니다. 0 0/2 * * * ?과(와) 같이 2분마다 실행되는 짧은 간격의 cron 식을 사용하여 기존 작업을 찾습니다.
단계는 AEM as a Cloud Service 사용 안내서의 CRXDE Lite 사용을 참조하세요. 일반적인 작업 노드에는 다음과 유사한 속성이 있습니다.
jobTitle = Remove Old File AttachmentscronExpression = 0 0/2 * * * ?(2분마다 실행)scheduledJobId = <job-id>script = <groovy-script-body>output = <summary-of-job-output>
이러한 작업이 비즈니스 크리티컬 콘텐츠가 아닌 감사 로그만 생성하는 경우, 감사 노드를 안전하게 정리하고 일정을 조정하거나 제거하여 더 이상 빠른 증가를 방지할 수 있습니다. 단계는 AEM의 감사 로그 유지 관리를 참조하십시오.
2단계: Groovy 콘솔 감사 노드 정리
저장소 크기를 줄이려면 /var/groovyconsole/audit/user/<year> 아래에 누적된 감사 노드를 제거하십시오. 추가적인 증가를 방지하기 위해 새로운 예약된 작업이 아닌 온디맨드 Groovy 콘솔 스크립트를 사용합니다.
중요: 프로덕션 시스템에서는 Groovy Console을 주의해서 사용하십시오. 항상 먼저 낮은 환경에서 스크립트를 테스트하고 대상 경로를 확인한 다음 적절한 변경 관리 절차에 따라 스크립트를 실행합니다. 단계는 AEM 6.5 사용 안내서의 AEM 6에서 감사 로그 유지 관리를 참조하십시오.
이 시나리오에서는 다음과 같은 사용자별 및 연도별 경로 아래의 Groovy Console 감사 추적 노드에서 증가합니다.
/var/groovyconsole/audit/user/<year>
이 경로에는 Groovy 콘솔 작업에 대한 감사 데이터만 포함되어 있으며 안전하게 제거할 수 있습니다. 사용자 환경에 맞게 경로의 연도 세그먼트를 조정합니다.
예제 Groovy 콘솔 스크립트:
import javax.jcr.Session
// Adjust this path to the correct audit root for your environment.
// Example: "/var/groovyconsole/audit/user/<year>"
def path = "/var/groovyconsole/audit/user/<year>"
Session s = session // Groovy Console injects a live JCR session
if (s.nodeExists(path)) {
s.getNode(path).remove()
s.save()
println "Removed audit nodes under " + path
} else {
println "No audit nodes to remove at " + path
}
/var/groovyconsole/audit/user/<year>에서 노드를 제거할 수 있는 권한이 있는 사용자 계정으로 프로덕션에서 스크립트를 한 번 실행하십시오. 많은 환경에서 이 사용자는 관리 또는 서비스 사용자이지만 정확한 권한은 내부 보안 모델에 따라 다릅니다.
스크립트가 완료된 후 CRXDE Lite에서 감사 노드가 제거되었는지 확인하고 Groovy Console 작업이 더 이상 실행되지 않거나 덜 적극적인 일정과 최소한의 로깅을 사용하여 실행되는지 확인하십시오.
3단계: 오프라인 압축을 위한 가동 중지 시간 및 백업을 예약합니다
- 업무 외 시간 동안 유지 관리 기간을 계획합니다.
- 필요한 경우 유지 관리 페이지를 표시하거나 기존 운영 절차를 사용하여 사용자 액세스를 차단합니다.
- 계속하기 전에 인스턴스의 전체 백업(AEM 설치 디렉터리 및 데이터 저장소 포함)을 만듭니다. 오프라인 압축은 디스크의 저장소를 변경하므로 쉽게 되돌릴 수 없습니다. 단계는 Adobe Experience Manager 인스턴스 모니터링 및 유지 관리에서 백업을 참조하세요.
- AEM Forms 인스턴스를 완전히 중지합니다.
4단계: segmentstore에서 오프라인 수정 버전 압축 실행
단계는 AEM 6.5 사용 안내서의 개정 정리를 참조하십시오. AEM 6.5 서비스 팩 수준과 호환되는 oak-run 버전을 사용하십시오. 현재 segmentstore 크기의 최소 두 배를 사용 가능한 디스크 공간으로 사용할 수 있는지 확인하십시오. 인스턴스를 호스팅하는 서버의 AEM 설치 디렉토리에서 다음 명령을 실행합니다.
java -Xmx16g -jar oak-run-1.22.21.jar compact ./crx-quickstart/repository/segmentstore
프로세스가 성공적으로 완료될 때까지 모니터링합니다. 압축을 방해하지 마십시오. 이렇게 하면 저장소가 손상될 수 있습니다.
5단계: AEM을 다시 시작하고 유효성을 검사합니다
- 압축이 완료된 후 AEM Forms 인스턴스를 시작합니다.
- 가동 중지 시간 동안 사용되는 모든 유지 관리 페이지 또는 로드 밸런서 규칙을 제거합니다.
- 모든 Forms 기능이 예상대로 작동하는지 확인합니다(작성, 제출, 처리, 통합).
crx-quickstart/repository/segmentstore의 크기 및 디스크 사용량을 확인하여 크기가 예상 수준으로 감소했는지 확인하십시오.
예방 및 모범 사례
- 프로덕션에서 빈도가 높은 Groovy Console 작업을 피하십시오. 예약된 작업은 드물게 사용하고 필요한 경우에만 사용합니다.
- Groovy Console 및 기타 도구에 대한 감사 로깅을 적절한 수준으로 유지하고 감사 데이터를 정기적으로 제거하십시오.
segmentstore의 크기 및 디스크 사용량을 모니터링합니다. 정의된 임계값에 근접할 때 경고를 구성합니다.- Adobe 권장 사항에 따라 온라인 개정 정리를 실행하고 특히 대규모 정리 후 필요에 따라 정기적인 오프라인 압축을 수행합니다.
- 대량의 감사 데이터를 생성하는 사용자 지정 스크립트 대신 가능한 경우 내장 유지 관리 작업 및 지원되는 API를 사용하십시오.
참고
crx-quickstart/repository/segmentstore에서 파일을 수동으로 삭제하지 마십시오. 직접 파일을 삭제하면 저장소가 손상되어 데이터 손실이 발생할 수 있습니다.- 온라인 수정 버전 정리로 세그멘테이션 저장소 크기가 줄어들지 않고 세그멘테이션 저장소가 계속 증가하는 경우 최근 사용자 지정 작업, 스크립트 및 대량 작업을 검토하여 쓰기 작업의 소스를 확인하십시오.
- 리포지토리 상태가 의심스러울 때는 먼저 환경의 복제본에서 문서화된 Oak 일관성 및
check도구를 사용한 다음 프로덕션에 동일한 단계만 적용합니다.