504 백엔드 서버의 게이트웨이 시간 초과

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

증상

클라이언트 애플리케이션이 HTTP 상태 코드 504를 메시지와 함께 수신합니다. API 호출에 대한 응답으로 '게이트웨이 시간 초과' 발생

이 오류 응답은 API 호출 실행 중에 클라이언트가 Apigee Edge 또는 백엔드 서버로부터 적시에 응답을 받지 못했음을 나타냅니다.

오류 메시지

클라이언트 애플리케이션이 다음과 같은 응답 코드를 수신합니다.

HTTP/1.1 504 Gateway Timeout

이 코드 다음에 아래와 유사한 오류 메시지가 표시될 수 있습니다.

<html>
<head><title>504 Gateway Timeout</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Timeout</h1></center>
</body>
</html>

게이트웨이 시간 초과의 원인은 무엇인가요?

Apigee Edge를 통해 이루어지는 API 요청의 일반적인 경로는 클라이언트 -> 라우터 -> 메시지 프로세서 -> Backend Server를 사용해야 합니다.

API 요청 경로

클라이언트 애플리케이션, 라우터, 메시지 프로세서는 적절한 시간 제한 값으로 구성됩니다. Apigee Edge는 제한 시간 값을 기준으로 일정 기간 내에 모든 API 요청에 대한 응답을 예상합니다. 지정된 기간 내에 응답이 수신되지 않으면 504 게이트웨이 시간 초과 응답이 반환됩니다.

가능한 원인

Apigee Edge에서 백엔드 서버의 504 게이트웨이 시간 초과 응답이 발생하는 일반적인 원인은 다음과 같습니다.

원인 설명 문제 해결 안내
504 게이트웨이 시간 초과로 백엔드 서버가 응답 백엔드 서버가 타임아웃되고 메시지 프로세서에 504 게이트웨이 시간 초과 응답이 반환됩니다. Edge 프라이빗 및 퍼블릭 클라우드 사용자

백엔드 서버가 504 게이트웨이 시간 초과로 응답

백엔드 서버가 HTTP 응답 코드 504 게이트웨이 시간 초과로 응답할 수 있습니다.

진단

이 섹션에서는 504 게이트웨이 시간 초과를 올바르게 진단하는 방법을 설명합니다. 프라이빗 및 퍼블릭 클라우드 사용자가 나열됩니다.

절차 #1: Trace 사용 (프라이빗 및 퍼블릭 클라우드 사용자)

  1. Apigee UI에서 영향을 받는 API에 대해 Trace를 사용 설정합니다.
  2. 백엔드 서버에 요청을 보냅니다.
  3. 실패한 API 요청에 Trace의 백엔드 서버로부터 504 응답이 표시되면 504 게이트웨이 시간 초과의 원인은 백엔드 서버입니다.
  4. 응답 시간을 확인하려면 Response received from target server(대상 서버에서 응답 수신됨)를 클릭합니다. 사용할 수 있습니다 이 예에서 경과된 시간은 60, 004ms입니다.

    UI의 단계 세부정보

    단계 세부정보 섹션에서는 추가 정보를 제공합니다.

    • 백엔드 서버에서 수신한 504 게이트웨이 시간 초과 응답이 강조표시됩니다.
    • Response Content 섹션에는 백엔드 서버입니다 앞서 언급했듯이 응답 페이로드의 형식과 내용은 다를 수 있습니다. 서버 구현을 기반으로 합니다
    • 응답 헤더 > 서버 섹션에 응답이 발생한 위치가 표시될 수 있습니다.
  5. 애널리틱스 데이터를 보고 진단을 확인하려면 기록된 애널리틱스 데이터를 클릭하세요. 단계를 수행합니다.

    trace의 애널리틱스 세부정보

    단계 세부정보의 응답 헤더 섹션에는 X-Apigee-fault-codeX-Apigee-fault-source 아래 그림:

    UI의 분석 단계 세부정보

    이 필드에 아래 표에 표시된 값이 포함된 경우 504 오류 응답이 발생합니다. 다음과 같습니다.

    응답 헤더
    X-Apigee-fault-source target
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  6. 확인 프록시 체이닝. 백엔드 서버가 다른 프록시를 호출하고 있는지 확인하려면 다음 단계를 따르세요. Apigee의 경우: <ph type="x-smartling-placeholder">
      </ph>
    1. 대상 서버로 전송된 요청 단계로 돌아가서 백엔드 서버 호스트 별칭을 보려면 Curl 표시 버튼을 클릭합니다.
    2. 백엔드 서버 호스트 별칭이 가상 호스트 별칭을 가리키는 경우 프록시 체인은 있습니다. 연결된 각 프록시에 대해 위의 단계를 반복하여 504 게이트웨이의 원인을 진단합니다. 시간 초과 오류 응답입니다. 다른 단계의 체인으로 연결된 프록시에서 504 게이트웨이 시간 초과 발생 요청/응답 주기는 이 플레이북을 참고하세요.
    3. 백엔드 서버 호스트 별칭이 백엔드 서버를 가리키는 경우 해결 방법.

절차 #2: 백엔드 서버 API 직접 호출 (퍼블릭 및 프라이빗 클라우드 사용자)

백엔드 서버를 직접 호출하여 발생한 동일한 504 게이트웨이 시간 초과 응답 동작을 확인합니다. Apigee Edge를 통해 요청이 수행될 때 생성됩니다.

  1. 이 작업을 수행하는 데 필요한 모든 필수 헤더, 쿼리 매개변수, 사용자 인증 정보가 있는지 요청의 일부로 백엔드 서버에 전달합니다.
  2. 백엔드 서비스에 공개적으로 액세스할 수 있는 경우 curl 명령어를 사용할 수 있습니다. Postman 또는 기타 REST 클라이언트를 사용하여 직접 백엔드 서버 API를 호출합니다.
  3. 메시지 프로세서에서만 백엔드 서버에 액세스할 수 있는 경우 curl를 사용합니다. 명령, Postman 또는 기타 REST 클라이언트가 메시지 프로세서.
  4. 백엔드 서비스가 504 게이트웨이 시간 초과 응답을 반환하면 다음을 진행합니다. 해결 방법.

절차 #3: NGINX 액세스 로그 확인 (프라이빗 클라우드 사용자만 해당)

NGINX 액세스 로그는 백엔드 서버에서 504 오류 응답을 전송했는지 확인하는 데 도움이 될 수 있습니다. 이 기능은 문제가 과거에 발생했거나 간헐적으로 발생했거나 문제를 파악할 수 없는 경우에 특히 유용합니다. trace에 저장합니다 NGINX 액세스 로그를 확인하려면 다음 단계를 따르세요.

  1. 다음 명령어를 사용하여 NGINX 액세스 로그를 확인합니다.
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  2. 영향을 받는 API 프록시에 504 오류 응답이 표시되는지 확인합니다. 특정 기간을 확인하거나 문제가 과거에 발생했는지 확인하거나 504 오류 응답으로 요청이 여전히 실패하고 있는지 확인합니다.
  3. 504 오류 응답이 있는 경우 오류 응답이 백엔드 서버입니다
  4. 아래 그림은 대상 서버:

    샘플 nginx 로그

    X-Apigee-fault-sourceX-Apigee-fault-code 필드에 값이 있는 경우 504 응답은 백엔드 서버에서 발생합니다.

    응답 헤더
    X-Apigee-fault-source target
    X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
  5. 영향을 받은 API 프록시를 검토하여 프록시 체이닝을 확인하세요. 즉, 백엔드 서버/대상 엔드포인트가 Apigee에서 다른 프록시를 호출하고 있습니다. API 프록시가 프록시 체이닝을 사용하여 인 경우 연결된 각 프록시에 대해 위의 단계를 반복하여 504 게이트웨이 시간 초과의 원인을 진단합니다. 오류 응답이 반환됩니다. 다른 단계에서 연결된 프록시에서 발생하는 504 게이트웨이 시간 초과를 진단할 수 있습니다. 이 플레이북을 참고하세요.
  6. 이 없는 경우 프록시 체이닝이 되며 504 오류 응답이 백엔드 서버에서 시작됨 해결 방법을 진행합니다.

절차 #4: API 모니터링 사용 (퍼블릭 클라우드 사용자만 해당)

API 모니터링으로 문제 격리 가능 오류, 성능, 지연 시간 문제를 진단할 수 있는 영역과 그 원인(예: 개발자 앱, API 프록시, 백엔드 대상 또는 API 플랫폼

샘플 시나리오 살펴보기 에서 API Monitoring을 사용해 API의 5xx 문제를 해결하는 방법을 알아보세요. 예를 들어 상태 코드 504개가 특정 기준점을 초과하면 관리자에게 알리도록 알림을 설정합니다.

해상도

위에서 설명한 진단 절차를 사용하여 백엔드 서버팀과 협력하여 문제를 해결할 수 있습니다. 확인할 수 있습니다 여기에는 백엔드 서버의 시간 제한 조정 또는 제한 시간을 설정할 수 있습니다

진단 정보 수집

문제가 지속되면 다음 진단 정보를 Apigee 지원팀과 공유하세요.

퍼블릭 클라우드 사용자는 다음 정보를 제공하세요.

  • 조직 이름
  • 환경 이름
  • API 프록시 이름
  • 504 오류 응답을 재현하는 데 사용되는 curl 명령어를 완료합니다.
  • 504 게이트웨이 시간 초과 오류 응답을 수신하는 API 요청이 있는 추적 파일

프라이빗 클라우드 사용자인 경우 다음 정보를 제공하세요.

  • 실패한 요청에 대해 발견된 전체 오류 메시지
  • 환경 이름
  • API 프록시 번들
  • 504 Gateway Timeout 오류 응답을 수신하는 API 요청이 있는 추적 파일
  • NGINX 액세스 로그
    /opt/apigee/var/log/edge-router/nginx/ ORG ~ENV.PORT# _access_log 
  • 메시지 프로세서 로그
    /opt/apigee/var/log/edge-message-processor/logs/system.log