<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
증상
클라이언트 애플리케이션이 HTTP 상태 코드 502 Bad Gateway
를 가져옵니다.
API에 대한 응답으로 protocol.http.TooBigHeaders
오류 코드
있습니다.
오류 메시지
클라이언트 애플리케이션은 다음과 같은 응답 코드를 받습니다.
HTTP/1.1 502 Bad Gateway
또한 다음과 같은 오류 메시지가 표시될 수 있습니다.
{ "fault":{ "faultstring":"response headers size exceeding 25,600", "detail":{ "errorcode":"protocol.http.TooBigHeaders" } } }
가능한 원인
이 오류는 대상/백엔드에서 전송한 헤더의 총 크기가 HTTP 응답의 일부인 Apigee Edge 서버가 허용된 크기보다 큽니다. Apigee Edge에서 허용되는 한도
이 오류가 발생할 수 있는 원인은 다음과 같습니다.
원인 | 설명 | 다음에 관한 문제 해결 안내 |
---|---|---|
응답의 헤더 크기가 허용된 한도를 초과합니다. | 특정 헤더의 헤더 크기 또는 모든 Apigee Edge에 대한 HTTP 응답의 일부로 대상/백엔드 서버에서 전송한 헤더입니다. Apigee Edge에서 허용되는 한도를 초과합니다. | 에지 퍼블릭 및 프라이빗 클라우드 사용자 |
일반적인 진단 단계
다음 도구/기술 중 하나를 사용하여 이 오류를 진단합니다.
API 모니터링
<ph type="x-smartling-placeholder">API 모니터링을 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- <ph type="x-smartling-placeholder"></ph> 다음 계정으로 Apigee Edge UI에 로그인: 역할을 수행하는 것이 좋습니다.
문제를 조사하려는 조직으로 전환합니다.
- 분석 > API 모니터링 > 조사 페이지를 엽니다.
- 오류가 관찰된 특정 기간을 선택합니다.
- 프록시 필터를 선택하여 오류 코드의 범위를 좁힐 수 있습니다.
- 시간을 기준으로 결함 코드를 표시합니다.
오류 코드가
protocol.http.TooBigHeaders
인 셀을 선택하세요. 다음과 같습니다.( 더 크게 보기)
오류 코드에 대한 정보가 표시됩니다.
protocol.http.TooBigHeaders
는 다음과 같습니다.( 더 크게 보기)
로그 보기를 클릭하고 실패한 요청의 행을 펼칩니다.
( 더 크게 보기)
- 로그 창에서 다음 세부정보를 확인합니다.
<ph type="x-smartling-placeholder">
- </ph>
- 상태 코드:
502
- 오류 소스:
target
- 오류 코드:
protocol.http.TooBigHeaders
.
- 상태 코드:
- 결함 소스의 값이
target
이고 결함 코드의 값이protocol.http.TooBigHeaders
이면 대상/ 백엔드 서버의 HTTP 응답에 크기가 큰 헤더가 있음 한도를 초과해서는 안 됩니다. Apigee Edge에서 허용되는 한도.
추적 도구
<ph type="x-smartling-placeholder">- 추적 세션 사용 설정
그리고 다음 중 한 가지 조건 충족.
<ph type="x-smartling-placeholder">
- </ph>
502 Bad Gateway
오류가 발생할 때까지 기다립니다.- 문제를 재현할 수 있으면 API를 호출하고
502 Bad Gateway
오류를 재현합니다.
- 실패한 요청 중 하나를 선택하고 trace를 검토합니다.
- 추적의 여러 단계를 살펴보고 장애가 발생한 위치 찾기 수 있습니다.
일반적으로 이 오류는 Error라는 이름의 흐름에서 대상 서버로 요청 전송 단계를 실행하는 방법을 보여줍니다.
( 더 크게 보기)
트레이스에서 오류 값을 확인합니다.
- 오류:
response headers size exceeding 25,600
- error.class:
com.apigee.errors.http.server.BadGateway
이는 Apigee Edge (메시지 프로세서 구성요소)가 다음과 같은 오류를 발생시킨다는 것을 나타냅니다. 헤더 크기로 인해 백엔드 서버로부터 응답을 수신하는 즉시 한도를 초과해서는 안 됩니다.
- 오류:
Response Sent to Client 섹션에 실패가 표시됩니다. 다음과 같이 Apigee Edge에서 전송한 오류 응답을 보여줍니다.
( 더 크게 보기)
- 트레이스에서 오류 값을 확인합니다. 위의 샘플 trace는 다음을 보여줍니다.
<ph type="x-smartling-placeholder">
- </ph>
- 오류:
502 Bad Gateway
- 오류 콘텐츠:
<ph type="x-smartling-placeholder">
{"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}
</ph>
- 오류:
트레이스에서 AX (기록된 애널리틱스 데이터) 단계로 이동합니다. 클릭하여 관련 세부정보를 확인합니다.
( 더 크게 보기)
다음 값에 유의하세요.
오류 헤더 값 X-Apigee-fault-code protocol.http.TooBigHeaders
X-Apigee-fault-source target
오류 콘텐츠: 본문 {"fault":{"faultstring":"response headers size exceeding 25,600","detail":{"errorcode":"protocol.http.TooBigHeaders"}}}
NGINX
<ph type="x-smartling-placeholder">NGINX 액세스 로그를 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- Private Cloud 사용자인 경우 NGINX 액세스 로그를 사용하여
HTTP
502 Bad Gateway
에 대한 주요 정보를 결정합니다. NGINX 액세스 로그를 확인합니다.
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
위치: ORG, ENV, PORT#는 실제 값으로 대체됩니다.
502
오류가 있는지 검색하여 확인합니다. 특정 기간 동안 오류 코드protocol.http.TooBigHeaders
발생 (과거에 문제가 발생한 경우) 또는 여전히502
X-Apigee-fault-code에서
502
오류가 발견된 경우protocol.http.TooBigHeaders
의 값과 일치하는 경우 X-Apigee-fault-source.NGINX 액세스 로그의 샘플 502 오류:
NGINX 액세스 로그의 위 샘플 항목에는 X-Apigee-fault-code 및 X-Apigee-fault-code
오류 헤더 값 X-Apigee-fault-code protocol.http.TooBigHeaders
X-Apigee-fault-source target
원인: 응답의 헤더 크기가 허용된 한도를 초과합니다.
진단
- 오류 코드, 오류 소스, 응답 페이로드 크기를 결정합니다. 오류(API 모니터링, Trace 도구 또는 NGINX 액세스 로그 사용 시 일반적인 진단 단계.
- 결함 소스의 값이
target
이면 대상/백엔드 서버에서 Apigee로 보낸 응답에 크기가 큰 헤더가 있는 경우 Apigee Edge에서 허용되는 한도보다 높습니다. - 대상/백엔드의 응답에 크기가 다음과 같은 헤더가 있는지 검증할 수 있습니다.
다음 방법 중 하나를 사용하여 허용된 한도를 초과합니다.
오류 메시지
오류 메시지를 사용하여 유효성을 검사하려면 다음 안내를 따르세요.
Apigee Edge에서 수신된 전체 오류 메시지에 액세스할 수 있는 경우
faultstring
를 참고하세요.faultstring
는 다음을 나타냅니다. 응답 헤더 크기가 허용 한도를 초과했습니다.샘플 오류 메시지:
"faultstring":"response headers size exceeding 25,600"
위의 오류 메시지에서
faultstring
에서 응답에 총 크기가 허용된 한도를 초과하는 헤더가 있습니다.실제 요청
실제 요청을 사용하여 검증하려면 다음 안내를 따르세요.
대상/백엔드 서버에 대한 실제 요청에 액세스할 수 있는 경우 그러고 나서 다음 단계를 수행합니다.
- 퍼블릭 클라우드/프라이빗 클라우드 사용자인 경우 요청합니다. 백엔드 서버 자체에서 백엔드 서버로 직접 전송되거나 백엔드에 요청을 수행할 수 있는 머신 있습니다.
- Private Cloud 사용자인 경우 메시지 프로세서 중 하나에서 백엔드 서버를 연결합니다.
- 백엔드 서버에서 수신된 응답을 조사합니다. 구체적으로는 응답에서 전달된 헤더의 총 크기를 계산하고 확인합니다.
응답 페이로드의 헤더 크기가 Apigee Edge에서 허용되는 한도를 초과하는 경우 그것이 문제의 원인입니다
대상 서버의 샘플 응답:
curl -v https://TARGET_SERVER_HOST/test
* About to connect() to 10.1.0.10 port 9000 (#0) * Trying 10.1.0.10... * Connected to 10.1.0.10 (10.1.0.10) port 9000 (#0) > GET /test HTTP/1.1 > User-Agent: curl/7.29.0 > Host: 10.1.0.10:9000 > Accept: */* < < HTTP/1.1 200 OK < Accept-Ranges: bytes < Content-Length: 0 < Content-Type: text/plain; charset=utf-8 < Last-Modified: Tue, 20 Jul 2021 09:23:56 GMT
< Testheader1: XVlBzgba—-<snipped>---THctcuAx < Testheader2: hxKQFDaFpLSj—-<snipped>---FbcXoEFfRsWxP
< Date: Fri, 23 Jul 2021 09:51:22 GMT < * Connection #0 to host 10.1.0.10 left intact위의 예에서
Testheader1
및Testheader2
의 크기가 더 높기 때문에 에서 허용되는 한도를 초과하므로 이 오류에 대해 Apigee Edge를 참조하세요.
메시지 프로세서 로그
메시지 프로세서 로그를 사용하여 유효성을 검사하려면 다음 단계를 따르세요.
<ph type="x-smartling-placeholder">프라이빗 클라우드 사용자는 메시지 프로세서 로그를 사용하여 응답 헤더 크기가 Apigee Edge에서 허용되는 한도
메시지 프로세서 로그를 확인합니다.
/opt/apigee/var/log/edge-message-processor/logs/system.log
- 특정 기간 동안
502
오류가 있는지 검색하여 확인합니다. 지속 시간 (과거에 문제가 발생한 경우) 또는 여전히502
와 함께 실패합니다. 다음과 같은 검색 문자열을 사용할 수 있습니다.grep -ri "response headers size exceeding"
system.log
에서 다음과 유사한 줄이 표시됩니다. 응답 헤더 크기는 상황에 따라 다를 수 있습니다.2021-07-23 08:25:12,307 org:myorg env:prod api:bigheadertest rev:1 messageid:r23ijb1b-1 NIOThread@1 ERROR HTTP.CLIENT - HTTPClient$Context$3.onException() : ClientChannel[Connected: Remote:3.7.1.1:9000 Local:192.168.2.1:56098]@8414 useCount=1 bytesRead=0 bytesWritten=207 age=640ms lastIO=0ms isOpen=true.onExceptionRead exception: {} com.apigee.errors.http.server.BadGateway: response headers size exceeding 25,600 2021-07-23 08:25:12,307 org:myorg env:prod api:bigheadertest rev:1 messageid:r23ijb1b-1 NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractResponseListener.onException() : AbstractResponseListener.onError (HTTPResponse@31f3ef88, response headers size exceeding 25,600)
-
메시지 프로세서가 백엔드/타겟에서 응답을 받는 즉시 헤더의 총 크기가 25KB를 초과하는 것을 확인합니다. 중지되고 오류가 발생합니다.
response headers size exceeding 25,600
총 헤더 크기가 25KB를 초과하고 Apigee 크기가 제한값(25KB)을 초과하기 시작하면 오류 코드가 발생함 표시 이름:
protocol.http.TooBigHeaders
해상도
크기 수정
옵션 #1 [권장]: 헤더 크기를 전송하지 않도록 대상 서버 애플리케이션 수정 Apigee 한도 초과 시
<ph type="x-smartling-placeholder">- 특정 대상 서버가 응답 헤더 크기를 더 많이 전송하는 이유를 분석합니다. 한도에 정의된 허용 한도를 초과할 수 없습니다.
- 바람직하지 않은 경우 다음과 같이 백엔드 서버 애플리케이션을 수정합니다. 크기가 Apigee Edge를 참조하세요.
- 헤더 정보를 응답 본문의 일부로 전송할 수 있는지 확인합니다.
- 가능하다면 전송 시 전송하려던 대규모 정보를 모두 보내주세요. 응답 본문의 헤더에 저장됩니다. 이렇게 하면 응답 한도를 초과하지 않을 수 있습니다. 헤더 한도를 설정합니다.
CwC
옵션 2 : CwC 속성을 사용하여 응답 헤더 크기 한도 늘리기
<ph type="x-smartling-placeholder">Apigee는 CwC 속성을 사용하면 응답 헤더 크기 제한을 늘릴 수 있습니다. 자세한 내용은 다음을 참고하세요. <ph type="x-smartling-placeholder"></ph> 메시지 프로세서 제한 구성
<ph type="x-smartling-placeholder">한도
Apigee는 클라이언트 애플리케이션과 백엔드 서버에서 다음 메시지를 보내지 않을 것으로 예상합니다. 헤더 크기가 문서화된 허용 한도보다 큼 에서 요청/응답 헤더 크기 Apigee Edge 한도.
- 퍼블릭 클라우드 사용자인 경우 요청 및 응답 헤더 크기는 요청/응답 헤더 크기 Apigee Edge 한도.
- Private Cloud 사용자 의 경우 기본 최댓값을 수정했을 수 있습니다. 요청 및 응답 헤더 크기에 대한 제한도 없습니다 (권장되는 방법은 아님). 다음 안내를 따라 최대 응답 헤더 크기 제한을 결정할 수 있습니다. 현재 한도를 확인하는 방법
현재 한도를 확인하는 방법
<ph type="x-smartling-placeholder">
이 섹션에서는 HTTPResponse.headers.limit
속성이 다음과 같은지 확인하는 방법을 설명합니다.
메시지 프로세서의 새 값으로 업데이트되었습니다.
- 메시지 프로세서 머신에서 속성
HTTPResponse.headers.limit
/opt/apigee/edge-message-processor/conf
디렉터리에서 다음을 선택합니다. 아래와 같이 설정된 값을 확인할 수 있습니다. <ph type="x-smartling-placeholder">grep -ri "HTTPResponse.headers.limit" /opt/apigee/edge-message-processor/conf
</ph> - 위 명령어의 샘플 결과는 다음과 같습니다.
/opt/apigee/edge-message-processor/conf/http.properties:HTTPResponse.headers.limit=25k
위의 출력 예에서
HTTPResponse.headers.limit
속성은http.properties
에서25k
값으로 설정되었습니다.Apigee에서 비공개용으로 구성된 응답 페이로드 크기의 한도를 나타냅니다. 클라우드는 25KB입니다.
Apigee 지원팀의 도움이 더 필요하면 다음 페이지로 이동하세요. 진단 정보를 수집해야 합니다.
진단 정보 수집 필요
다음 진단 정보를 수집한 후 Apigee Edge 지원팀에 문의하세요.
퍼블릭 클라우드 사용자인 경우 다음 정보를 입력합니다.
- 조직 이름
- 환경 이름
- API 프록시 이름
502
오류를 재현하는 데 사용된curl
명령어를 완료합니다.- API 요청에 대한 추적 파일
- 헤더 크기와 함께 대상/백엔드 서버의 전체 응답 출력
Private Cloud 사용자인 경우 다음 정보를 입력합니다.
- 실패한 요청에 대해 발견된 전체 오류 메시지
- 조직 이름
- 환경 이름
- API 프록시 번들
- 실패한 API 요청의 추적 파일
502
오류를 재현하는 데 사용된curl
명령어를 완료합니다.- 헤더 크기와 함께 대상/백엔드 서버의 전체 응답 출력
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