<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
동영상
동영상 | 설명 |
---|---|
500 내부 서버 오류 - 백엔드로 인해 발생 | 백엔드 서버로 인해 발생한 실시간 500 Internal Server Error 를 문제 해결 단계와 함께 보여줍니다. |
증상
클라이언트 애플리케이션이 다음 메시지와 함께 HTTP 상태 코드 500
를 가져옵니다.
API 호출에 대한 응답으로 Internal Server Error
HTTP 상태 코드 500
은 일반 오류 응답입니다. 서버가
예상치 못한 상황이 발생하여 요청을 수행할 수 없습니다. 이 오류는
는 일반적으로 다른 오류 코드가 적합하지 않을 때 서버에서 반환합니다.
오류 메시지
클라이언트 애플리케이션은 다음과 같은 응답 코드를 받습니다.
HTTP/1.1 500 Internal Server Error
또한 아래와 유사한 오류 메시지가 표시될 수도 있습니다.
샘플 #1
샘플 백엔드 서버 응답 #1
{"errorMessage":"Sorry either your e-mail or password didn't match.", "errorParameters":"{}", "errorCode":"500", "errorKey":"INVALID_EMAILPASSWORD"}
샘플 #2
샘플 백엔드 서버 응답 #2
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
가능한 원인
다음과 같은 이유로 백엔드 서버에서 500 Internal Server Error
를 반환할 수 있습니다.
있습니다. 이 플레이북에서는 일반적인 단계를 사용하여 문제를 해결하고 이 문제를 해결하는 방법을 설명합니다.
오류가 발생합니다.
이 문제의 가능한 원인은 다음과 같습니다.
원인 | 설명 | 다음에 관한 문제 해결 안내 |
---|---|---|
백엔드 서버에서 오류 발생 | 어떤 이유로든 백엔드 서버가 실패할 수 있습니다. | Edge 프라이빗 및 퍼블릭 클라우드 사용자 |
일반적인 진단 단계
다음 도구/기술 중 하나를 사용하여 이 오류를 진단합니다.
API 모니터링
절차 #1: API 모니터링 사용
<ph type="x-smartling-placeholder">API 모니터링을 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- <ph type="x-smartling-placeholder"></ph> 다음 계정으로 Apigee Edge UI에 로그인: 역할을 수행하는 것이 좋습니다.
문제를 조사하려는 조직으로 전환합니다.
- 분석 > API 모니터링 > 조사 페이지를 엽니다.
- 오류가 관찰된 특정 기간을 선택합니다.
시간을 기준으로 결함 코드를 표시합니다.
<ph type="x-smartling-placeholder">오류 코드가 있는 셀을 선택합니다.
messaging.adaptors.http.flow.ErrorResponseCode
(아래 그림) 아래:( 더 크게 보기)
오류 코드에 대한 정보
messaging.adaptors.http.flow.ErrorResponseCode
는 다음과 같이 표시됩니다. 다음과 같습니다.( 더 크게 보기)
로그 보기 를 클릭하고 실패한 요청의 행을 펼칩니다.
( 더 크게 보기)
- 로그 창에서 다음 세부정보를 확인합니다.
<ph type="x-smartling-placeholder">
- </ph>
- 요청 메시지 ID
- 상태 코드:
500
- 오류 소스:
target
- 오류 코드:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
절차 #2: Trace 도구 사용
<ph type="x-smartling-placeholder">Trace 도구를 사용하여 오류를 진단하는 방법은 다음과 같습니다.
- 추적 세션을 사용 설정하고 다음 중 하나를 수행합니다.
<ph type="x-smartling-placeholder">
- </ph>
- 오류 코드와 함께
500 Internal Server Error
오류 대기 발생 시간messaging.adaptors.http.flow.ErrorResponseCode
또는 - 문제를 재현할 수 있는 경우 API를 호출하여 문제를 재현합니다.
500 Internal Server Error
- 오류 코드와 함께
모든 FlowInfos 표시가 사용 설정되어 있는지 확인합니다.
- 실패한 요청 중 하나를 선택하고 trace를 검토합니다.
- 추적의 여러 단계를 살펴보고 오류가 발생한 위치를 찾습니다.
오류는 일반적으로 대상 서버에서 수신된 응답 이후의 흐름에서 찾을 수 있습니다. 단계를 실행할 수 있습니다.
( 더 크게 보기)
- 트레이스의 AX (애널리틱스 데이터 기록됨) 단계로 이동하여 클릭합니다.
아래로 스크롤하여 단계 세부정보 응답 헤더 섹션으로 이동한 후 X-Apigee-fault-code 및 X-Apigee-fault-source의 값 X-Apigee-Message-ID:
( 더 크게 보기)
- X-Apigee-fault-code, X-Apigee-fault-source, 및 X-Apigee-Message-ID:
응답 헤더 | 값 |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
절차 #3: NGINX 액세스 로그 사용
<ph type="x-smartling-placeholder">NGINX 액세스 로그를 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- Private Cloud 사용자인 경우 NGINX 액세스 로그를 사용하여
HTTP
500 Internal Server Error
에 대한 주요 정보입니다. NGINX 액세스 로그를 확인합니다.
<ph type="x-smartling-placeholder">/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- 오류 코드와 함께
500
오류가 있는지 검색하여 확인합니다. 특정 기간 동안messaging.adaptors.http.flow.ErrorResponseCode
( 여전히500
로 실패하는 요청이 있는지 확인하세요. 일치하는 X-Apigee-fault-code 에
500
오류가 있는 경우messaging.adaptors.http.flow.ErrorResponseCode
의 값, X-Apigee-fault-source.의 값을 결정합니다.NGINX 액세스 로그의 샘플 500 오류:
( 더 크게 보기)
NGINX 액세스 로그의 위 샘플 항목에는 다음과 같은 값이 있습니다. X-Apigee-fault-code 및 X-Apigee-fault-code
헤더 값 X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
X-Apigee-fault-source target
원인: 백엔드 서버 오류
진단
백엔드 서버에서 응답한 500 Internal Server Error
는
발생할 수 있습니다. 각 상황을 개별적으로 진단해야 합니다.
- API Monitoring을 사용하여 관찰된 오류의 결함 코드, 오류 소스를 결정합니다. 일반적인 진단 단계에 설명된 Trace 도구 또는 NGINX 액세스 로그
- 결함 소스가
target
이고 결함 코드가 다음과 같은 경우messaging.adaptors.http.flow.ErrorResponseCode
이면 백엔드 서버에서 오류를 반환합니다. - 다음 단계 중 하나를 사용하여 문제의 원인을 진단할 수 있습니다.
Trace
Trace 사용:
해당 실패에 대한 추적 세션이 있는 경우 다음 단계를 수행합니다.
- Trace에서
500 Internal Server Error
Response received from target server(대상 서버에서 응답 수신) 단계를 선택합니다. API 요청이 실패하는 경우
( 더 크게 보기)
아래로 스크롤하여 단계 세부정보 섹션으로 이동한 다음 응답 콘텐츠: 백엔드 서버의 응답을 포함합니다.
샘플 응답 콘텐츠:
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
위의 응답에서 백엔드 서버의 오류 메시지는 다음과 같습니다. 승인되지 않음. 이는 사용자가 이로 인해 이 오류가 발생합니다.
백엔드 서버 호출
백엔드 서버 직접 호출:
백엔드 서버를 직접 호출하여 다음을 수행할 수 있습니다.
- 동일한
500 Internal Server Error
를 받는지 검증 Apigee Edge를 통해 요청되었을 때 수신된 응답 - 백엔드 서버에서 수신한 오류 메시지 (응답) 확인
백엔드 서버를 직접 호출하려면 다음 단계를 따르세요.
- 필요한 헤더, 쿼리 매개변수, 매개변수가 모두 있는지 확인합니다. 요청의 일부로 백엔드 서버에 전달해야 하는 사용자 인증 정보입니다.
- 백엔드 서비스에 공개적으로 액세스할 수 있는 경우 다음을 사용할 수 있습니다.
curl
명령어, Postman 또는 기타 REST 클라이언트를 사용해 백엔드 서버 API를 직접 사용할 수 있습니다. 메시지 프로세서에서만 백엔드 서버에 액세스할 수 있는 경우
<ph type="x-smartling-placeholder">curl
명령어, Postman 또는 기타 REST 클라이언트를 사용하고 백엔드 서버 API를 직접 사용할 수 있습니다.- 백엔드 서비스가 실제로
500 Internal Server Error
를 반환하는지 검증하고 백엔드 서버에서 반환된 오류 메시지 (응답)를 확인합니다. 이 오류의 원인을 판별하세요.
백엔드 서버 로그
백엔드 서버 로그 사용
- 백엔드 서버 로그를 검토하여 오류에 대한 자세한 내용을 확인하고 원인일 수 있습니다
- 가능한 경우 백엔드 서버에서 디버그 모드를 사용 설정하여 세부정보를 확인하세요. 오류 및 원인 정보를 확인할 수 있습니다
- Trace에서
다음을 사용 중인지 확인합니다. <ph type="x-smartling-placeholder"></ph> 실패한 API 프록시의 특정 대상 엔드포인트 내 특정 대상 엔드포인트에서의 프록시 체이닝 즉, 대상 서버/대상 엔드포인트가 Apigee Edge입니다. 확인하는 방법은 다음과 같습니다.
실패한 요청에 대한 trace가 있으면 전송된 요청 대상 서버 연결 단계에서 Curl 표시를 클릭합니다.
- 대상 서버로 전송된 요청의 컬럼 창이 열립니다. 확인할 수 있습니다
- API 프록시의 대상 엔드포인트를 검토하고 백엔드 서버가 대상 서버의 URL 또는 호스트 이름이 다른 프록시 또는 자체 프록시를 가리킴 백엔드 서버입니다
- 대상 서버 호스트 별칭이 가상 호스트 별칭을 가리키는 경우
프록시 체이닝입니다. 이 경우
연결된 프록시로 대체되지 않습니다.
500 Internal Server Error
이 경우500 Internal Server Error
님은 다른 단계의 체이닝된 프록시에서도 발생할 수 있으며, 이는 진단 및 이 플레이북이나 500 내부 서버 오류 플레이북. - 대상 서버 호스트 별칭이 백엔드 서버를 가리키는 경우 해결 방법.
해상도
백엔드 서버에서 500
오류가 발생한 것이 확인되면
백엔드 서버팀과 협력하여 문제를 적절히 해결합니다.
위에서 설명한 예에서는 사용자에게 문제를 해결하기 위해 유효한 사용자 인증 정보를 전달하도록 요청해야 할 수 있습니다. 확인할 수 있습니다
중요사항
500 Internal Server Error
의 백엔드 서버에서 반환한 실제 오류 메시지는 실패한 서비스의 트레이스 세션을 캡처한 경우에만 볼 수 있습니다. 있습니다- 백엔드 서버 응답은 API 모니터링, NGINX 액세스 로그 또는 보안상의 이유로 메시지 프로세서 로그.
- 백엔드 서버 로그를 검토하거나 백엔드에서 디버그 모드를 사용 설정하여 더 많은 로그를 확인할 수 있습니다.
500 Internal Server Error
세부정보 확인 또는 반환된 오류 메시지 보기 백엔드 서버에서 구현됩니다
진단 정보 수집 필요
위의 안내를 따른 후에도 문제가 지속되면 다음을 수집합니다. Apigee Edge 지원팀에 문의하세요.
퍼블릭 클라우드 사용자인 경우 다음 정보를 입력합니다.
- 조직 이름
- 환경 이름
- API 프록시 이름
curl
명령어를 완료하여500
오류를 재현합니다.500 Internal Server Error
가 있는 요청이 포함된 추적 파일500
오류가 현재 발생하지 않고 있다면 시간을 제공합니다. 과거500
오류가 발생했을 때의 시간대 정보가 포함된 마침표
Private Cloud 사용자인 경우 다음 정보를 입력합니다.
- 실패한 요청에 대해 발견된 전체 오류 메시지
- 관찰 중인 조직, 환경 이름, API 프록시 이름
오류
500
개 - API 프록시 번들
500 Internal Server Error
가 있는 요청이 포함된 추적 파일- NGINX 액세스 로그
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
위치: ORG, ENV, PORT# 실제 값으로 대체됩니다.
- 메시지 프로세서 시스템 로그
/opt/apigee/var/log/edge-message-processor/logs/system.log
500
오류가 발생했을 때의 시간대 정보가 포함된 기간입니다.