AEM 사이트에 JS 사용 API 문제로 인한 "예기치 않은 오류"가 표시됩니다

AEM 공개 사이트가 "예기치 않은 오류" 메시지와 함께 간헐적으로 중단되는 경우 JavaScript 사용 API 구성 요소 문제 때문일 수 있습니다. 포드를 다시 시작하여 서비스를 복원한 다음 더 이상 사용되지 않는 코드를 슬링 모델로 바꾸고 오류 처리를 개선하여 다시 발생하지 않도록 합니다.

설명 description

환경

Adobe Experience Manager as a Cloud Service(AEMaaCS) - 사이트

문제/증상

공개 웹 사이트에는 간헐적인 다운타임이 발생하며, 오류 메시지가 표시되고 특정 페이지를 로드하지 못하는 경우가 많습니다. 로그는 JavaScript Use API 인스턴스화 문제 및 HTTP 500 오류를 가리킵니다.

증상은 다음과 같습니다.

  • 예기치 않은 오류입니다. 우리는 그것을 온라인으로 가져오려고 노력하고 있습니다.영향을 받는 페이지의 메시지입니다.
  • Identifier linkDropdownLogic.js와 같은 JavaScript Use API 오류는 Use API에서 올바르게 인스턴스화할 수 없습니다.
  • 잘못된 참조 또는 스크립트 논리로 인한 Sling 예외.
  • 일부 페이지(예: 홈페이지)는 성공적으로 다시 로드되지만 일부 페이지는 로드되지 않습니다.

원인

사용자 지정 파일 Use API로 Identifier _____.js를 올바르게 인스턴스화할 수 없음 ​의 JavaScript 오류로 인해 중단이 발생했습니다.

  • ECMAScript 소멸을 사용한 코드: for (const [ _, res] of items)
  • 이 구문은 AEM의 Sightly에서 사용하는 Rhino 엔진과 호환되지 않습니다.
  • 복제하는 동안 스크립트에서 불완전한 콘텐츠 구조를 처리하려고 할 때 오류가 발생했습니다.

Pod에서 일어난 이유는 무엇입니까?

모든 게시 Pod에 동일한 코드가 있더라도 다음 이유로 인해 한 개만 실패했습니다.

  1. 불완전한 콘텐츠 복제 - Pod가 부분적으로 복제된 콘텐츠와 함께 임시 상태에 있었습니다.
  2. 안전하지 않은 반복기 처리 - JS 코드는 누락되었거나 불완전한 데이터 구조를 처리할 수 없습니다.
  3. 리소스 소모 - 오류 루프가 시스템 리소스를 소모하여 충돌이 발생했습니다.
  4. 자동 복구 없음 - 지속적인 리소스 소모로 인해 수동으로 다시 시작하지 않으면 pod을 복구할 수 없습니다.

기술 Insight

  • 엔진 제한 사항: Rhino JS 엔진은 Java 반복기에서 소멸을 지원하지 않습니다.
  • 코드 동작: 일반적인 조건에서 작동할 수 있지만, 스트레스나 부분 데이터에서 작동하지 않습니다.
  • 영향: 다른 Pod는 정상적으로 계속 실행되는 동안 한 Pod가 오류 루프에 들어갔습니다.

해결 방법 resolution

JavaScript Use API 문제를 해결하려면 다음을 수행하십시오.

  1. 환경을 일시적으로 안정시키려면 모든 게시 pod를 다시 시작합니다. 이렇게 하면 HTTP 500 오류가 지워지고 사이트 가용성이 복원됩니다.
  2. 그런 다음 인스턴스화 오류를 일으키는 JavaScript 모델 클래스를 검토하십시오. 더 이상 사용되지 않는 JavaScript Use API 구성 요소를 Java 기반 Sling 모델로 바꾸고 참조된 모든 클래스에 올바른 액세스 메서드가 있는지 확인합니다.
  3. Java 반복기에서 ECMAScript 소멸을 사용하지 않도록 문제가 있는 코드를 업데이트합니다. 대신 표준 Java 반복자 패턴을 사용하십시오. Null 확인 및 오류 처리를 추가하여 불완전한 콘텐츠 구조를 안전하게 관리합니다.
  4. JavaScript에 try/catch 블록을 추가합니다. API 스크립트를 사용하여 콘텐츠가 누락된 경우 전체 실패를 방지합니다. 우아하게 성능 저하를 방지하고 다중 구간 오류를 방지하기 위한 구성 요소 디자인
  5. 마지막으로, 구성 요소 종속성을 검토하고 탐색과 같은 중요한 요소에 캐시된 대체 콘텐츠를 사용하는 것을 고려하십시오. 외부 서비스에 의존하는 구성 요소에 대해 회로 차단기를 구현합니다.

관련 읽기

사용되지 않거나 제거된 기능 | Adobe Experience Manager

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