AEM 게시에서 아웃바운드 API 요청 시간 초과 해결

이 문서에서는 외부 API에서 큰 데이터 세트를 검색할 때 Adobe Experience Manager(AEM) 게시의 간헐적인 시간 초과 문제를 해결하는 방법을 설명하고 플랫폼 수준 시간 초과 오류를 방지하기 위한 전략을 제공합니다.

설명 description

환경

Adobe Experience Manager(AEM) 게시(AEM as a Cloud Service을 포함한 모든 버전)

증상

  • AEM Publish가 외부 API에서 큰 데이터 세트(예: 인벤토리 데이터)를 검색할 때 간헐적인 시간 초과가 발생합니다.
  • 외부 API가 첫 번째 바이트를 반환하는 데 플랫폼 수준 시간 제한보다 오래 걸려서 ServiceUnavailable 또는 첫 번째 바이트 시간 제한 오류가 발생합니다.
  • 이러한 시간 초과로 인해 데이터 검색 프로세스에 오류가 발생합니다.

원인

AEM 게시는 아웃바운드 HTTP 연결에 플랫폼 수준 시간 제한을 적용합니다. 외부 API의 응답이 느린 경우 AEM 게시의 동기 요청이 이 시간 제한을 초과하여 오류가 발생하고 데이터 검색이 실패했습니다.

해결 방법 resolution

아래 단계에 따라 문제를 해결하십시오.

  1. AEM 게시 코드에서 HTTP 클라이언트 구성을 검토하십시오.

    • 외부 API에 대한 아웃바운드 HTTP 요청에 대한 명시적 연결 및 읽기 시간 초과를 설정합니다. 코드에서 자체 시간 제한을 지정하지 않으면 플랫폼에서는 글로벌 시간 제한을 적용합니다(예: 10초 연결 및 60초 읽기).
  2. 장기간 실행되는 동기 호출을 방지하기 위해 통합을 최적화합니다.

    • 각 개별 API 호출이 더 작은 데이터 하위 집합을 처리하고 플랫폼 시간 제한 창 내에서 잘 완료되도록 인벤토리 검색 요청을 일괄 처리하거나 페이지를 매깁니다.

    • 예를 들어 한 번의 호출로 모든 인벤토리 항목을 요청하는 대신 더 작은 페이지(예: 호출당 500 또는 1000 항목)를 요청하고 필요에 따라 결과를 집계합니다.

  3. 가능하면 캐싱을 구현하거나 인벤토리 데이터를 미리 계산합니다.

    • 자주 액세스하는 인벤토리 데이터를 캐시에 저장하거나 사용량이 적은 시간 동안 미리 계산하여 반복되는 대용량 API 호출의 필요성을 줄일 수 있습니다.
  4. 장기 실행 인벤토리 가져오기를 비동기 처리로 이동:

    • 페이지 요청이 서드파티 API 응답을 기다리지 않도록 하는 대신, 인벤토리 업데이트를 비동기적으로 트리거하여(예: 예약된 작업 또는 백그라운드 작업자를 통해) 캐시되거나 미리 가져온 데이터를 최종 사용자에게 제공합니다.
  5. 플랫폼에서 허용하는 것보다 긴 시간 제한이 필요한 경우, 동기 장기 실행 호출을 방지하기 위해 통합을 다시 디자인합니다. 플랫폼 수준 시간 초과 증가는 지원되지 않습니다.

  6. 이러한 변경 작업을 수행한 후 인벤토리 검색이 성공적으로 완료되고 시간 초과 오류가 더 이상 발생하지 않는지 확인합니다.

recommendation-more-help
experience-cloud-kcs-help-kbarticles