<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
증상
클라이언트 애플리케이션이 HTTP 상태 코드 414 Request-URI Too Long
를 가져옵니다.
오류 코드 protocol.http.TooBigLine
를 API 호출에 대한 응답으로 반환합니다.
오류 메시지
클라이언트 애플리케이션은 다음과 같은 응답 코드를 받습니다.
HTTP/1.1 414 Request-URI Too Long
또한 다음과 같은 오류 메시지가 표시될 수 있습니다.
{ "fault":{ "faultstring":"request line size exceeding 7,168", "detail":{ "errorcode":"protocol.http.TooBigLine" } } }
위 오류 메시지의 faultstring
에는 허용되는 한도가 포함되어 있습니다.
Apigee Edge의 요청 줄인 7168 bytes
(7KB)입니다.
가능한 원인
이 오류는 클라이언트 애플리케이션에서 Apigee Edge로 보낸 요청 줄의 크기가 가 Apigee Edge에서 허용되는 한도보다 큽니다.
이 오류의 가능한 원인을 살펴보기 전에 요청 행이 그 크기를 확인하는 방법을 알 수 있습니다.
요청 줄 이해
일반적인 HTTP 요청은 다음 세 부분으로 구성됩니다.
- <ph type="x-smartling-placeholder"></ph> 요청 줄
- ( HTTP 헤더 세트 )
- [ 본문 ]
요청 줄은 아래와 같이 세 부분으로 구성됩니다.
Request-Line = <Method> <Request-URI> <HTTP-Version>
클라이언트 애플리케이션이 서버에 대한 HTTP 요청을 수행할 때 서버에는 위에서 설명한 요청 행이 포함됩니다. 그 다음에 헤더, 요청 본문/페이로드가 포함됩니다
다음 샘플 스크린샷은 일반적인 curl
요청인 Request
부분 (Request-Line과 함께) 및 Response 부분이 있습니다.
요청 줄 크기 이해
- 위에 설명된 샘플에서는 요청의 start 행 (첫 번째 줄)도
요청 행은 다음과 같습니다.
GET /test/ HTTP/1.1
요청 줄의 크기는
~19 bytes
19 ASCII characters
이는 Apigee Edge에서 허용되는 한도가 있는 경우 요청이 오류 없이 처리됩니다. 성공적인 응답을 받게 됩니다. - 마찬가지로
faultstring
오류 메시지가 포함된 경우"request line size exceeding 7,168"
이(가) 포함되어 있습니다. 클라이언트가 수행한 HTTP 요청의 요청 줄 7,168바이트입니다.
이 오류가 발생할 수 있는 원인은 다음과 같습니다.
원인 | 설명 | 다음에 관한 문제 해결 안내 |
---|---|---|
요청 페이로드 크기가 허용된 한도보다 큽니다. | HTTP의 일부로 클라이언트 애플리케이션에서 전송한 요청-URI의 크기 Apigee Edge에 대한 요청이 Apigee Edge에서 허용되는 한도보다 큽니다. | 에지 퍼블릭 및 프라이빗 클라우드 사용자 |
일반적인 진단 단계
다음 도구/기술 중 하나를 사용하여 이 오류를 진단합니다.
API 모니터링
<ph type="x-smartling-placeholder">API 모니터링을 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- <ph type="x-smartling-placeholder"></ph> 다음 계정으로 Apigee Edge UI에 로그인: 역할을 수행하는 것이 좋습니다.
문제를 조사하려는 조직으로 전환합니다.
- 분석 > API 모니터링 > 조사 페이지를 엽니다.
- 오류가 관찰된 특정 기간을 선택합니다.
- 시간을 기준으로 결함 코드를 표시합니다.
- 오류 코드가
protocol.http.TooBigLine
인 셀을 선택합니다. 상태 코드414
( 더 크게 보기)
오류 코드(
protocol.http.TooBigline
)에 관한 정보가 표시됩니다. 다음과 같습니다.( 더 크게 보기)
로그 보기를 클릭하고 실패한 요청의 행을 펼칩니다.
( 더 크게 보기)
로그 창에서 다음 세부정보를 확인합니다.
- 상태 코드:
414
- 오류 소스:
apigee
- 오류 코드:
protocol.http.TooBigLine
. - 요청 길이(바이트):
7244 (> 7KB)
- 상태 코드:
- 결함 소스의 값이
apigee
또는MP
이면 결함 코드의 값은protocol.http.TooBigLine
및 Request-Length가 7KB를 초과하면 HTTP 요청이 의 요청 URI가 Apigee에서 허용되는 한도입니다.
추적 도구
<ph type="x-smartling-placeholder">NGINX
<ph type="x-smartling-placeholder">NGINX 액세스 로그를 사용하여 오류를 진단하려면 다음 안내를 따르세요.
- Private Cloud 사용자인 경우 NGINX 액세스 로그를 사용하여
HTTP
414
오류에 대한 주요 정보를 확인할 수 있습니다. NGINX 액세스 로그를 확인합니다.
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
위치: ORG, ENV, PORT#는 실제 값으로 대체됩니다.
- 특정 기간 동안
414
오류가 있는지 검색합니다. (과거에 문제가 발생한 경우) 또는 여전히414
X-Apigee-fault-code에서
414
오류가 발견된 경우protocol.http.TooBigLine
의 값과 일치하는 경우 X-Apigee-fault-source.NGINX 액세스 로그의 위 샘플 항목에는 X-Apigee-fault-code 및 X-Apigee-fault-code
응답 헤더 값 X-Apigee-fault-code protocol.http.TooBigLine
X-Apigee-fault-source policy
요청 길이에 유의하세요.
7244
(7.244KB > 허용되는 한도)
원인: 요청 페이로드 크기가 허용된 한도를 초과합니다.
진단
- 오류 코드, 오류 소스, 요청 길이 크기를 'API 모니터링', '추적 도구' 또는 'NGINX 액세스' 로그를 사용할 때 일반적인 진단 단계.
- 결함 소스의 값이
apigee
또는MP
이면 클라이언트 애플리케이션에서 Apigee로 보낸 요청 크기가 Apigee Edge에서 허용되는 한도입니다. - 다음 중 하나를 사용하여 요청 줄 크기가 허용된 한도 7KB를 초과했는지 확인할 수 있습니다.
다음 메서드를 참조하세요.
오류 메시지
오류 메시지를 사용하여 유효성을 검사하려면 다음 안내를 따르세요.
Apigee Edge에서 수신된 전체 오류 메시지에 액세스할 수 있는 경우
faultstring
를 참고하세요.faultstring
는 다음을 나타냅니다. 요청 줄 크기가 허용 한도인 7KB를 초과했습니다.샘플 오류 메시지:
"faultstring":"request line size exceeding 7,168"
실제 요청
실제 요청을 사용하여 검증하려면 다음 안내를 따르세요.
클라이언트 애플리케이션의 실제 요청에 액세스할 수 있는 경우 그러고 나서 다음 단계를 수행합니다.
- 요청에 전달된 URI의 크기를 확인합니다.
URI의 크기가 Apigee Edge에서 허용되는 한도: 문제의 원인을 자세히 알아보세요
샘플 요청:
curl http://<hostalias>/testtoobigline?_qparam=000000000000000000……..000000<trimmed> -k -X POST
위의 경우 쿼리 매개변수
qparam
의 값은 ASCII 문자가 7KB를 초과해서는 안 됩니다.다른 클라이언트를 사용 중인 경우에는 클라이언트 로그를 검토하고 Apigee Edge로 전송되는 요청 줄의 크기를 확인하세요.
메시지 프로세서 로그
메시지 프로세서 로그를 사용하여 유효성을 검사하려면 다음 단계를 따르세요.
<ph type="x-smartling-placeholder">프라이빗 클라우드 사용자는 메시지 프로세서 로그를 사용하여 요청 줄 크기가 Apigee Edge에서 허용되는 한도
메시지 프로세서 로그를 확인합니다.
/opt/apigee/var/log/edge-message-processor/logs/system.log
- 특정 기간 동안 오류
414
개가 있는지 검색하세요. 지속 시간 (과거에 문제가 발생한 경우) 또는 여전히414
와 함께 실패합니다. 다음 검색 문자열을 사용할 수 있습니다.grep -ri "exceeding"
grep -ri "RequestURITooLong"
system.log
에서 다음과 유사한 줄이 표시됩니다.2021-07-12 08:53:31,461 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:null, uri:null, message Id:null, exception:com.apigee.errors.http.user.RequestURITooLong{ code = protocol.http.TooBigLine, message = request line size exceeding 7,168, associated contexts = []}, context:Context@366f4217 input=ClientInputChannel(SSLClientChannel[Accepted: Remote:192.168.195.90:8443 Local:192.168.67.23:34256]@301912 useCount=1 bytesRead=0 bytesWritten=45849 age=2254670ms lastIO=0ms isOpen=true)
message = request line size exceeding 7,168
는 요청 URI 크기가 7KB를 초과한다는 의미입니다. 따라서 Apigee Edge는 예외를 발생시킵니다.com.apigee.errors.http.user.RequestURITooLong
및 반품 클라이언트 애플리케이션에 오류 코드가 있는414
상태 코드protocol.http.TooBigline
를 보냅니다.
해상도
<ph type="x-smartling-placeholder">
크기 수정
옵션 #1[권장]: 요청 URI 크기가 허용된 한도를 초과하지 않도록 클라이언트 애플리케이션 수정
<ph type="x-smartling-placeholder">- 특정 클라이언트가 다음보다 큰 요청 URI 크기를 보내는 이유를 분석합니다. 한도에 정의된 대로 허용되는 한도를 나타냅니다.
바람직하지 않은 경우 요청 URI를 전송하도록 클라이언트 애플리케이션을 수정합니다. 허용되는 한도보다 작은 크기를 허용하는 것이 좋습니다.
위에서 설명한 예에서는 긴 쿼리를 전달하여 문제를 해결할 수 있습니다. 매개변수를 요청 URL을 전달할 수 있습니다.
curl https://<host>/testtoobigline -k -X GET -d '{_qparam=000000000000000000<trimmed>}' -v
- 허용 한도보다 많은 URI를 전송하려면 확인할 수 있습니다.
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">
이 섹션에서는 HTTPRequest.line.limit
속성이 다음과 같은지 확인하는 방법을 설명합니다.
메시지 프로세서의 새 값으로 업데이트되었습니다.
- 메시지 프로세서 머신에서 속성
HTTPRequest.line.limit
/opt/apigee/edge-message-processor/conf
디렉터리에서 다음을 선택합니다. 아래와 같이 설정된 값을 확인할 수 있습니다. <ph type="x-smartling-placeholder">grep -ri "HTTPRequest.line.limit" /opt/apigee/edge-message-processor/conf
</ph> - 위 명령어의 샘플 결과는 다음과 같습니다.
/opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.line.limit=7k
위의 출력 예에서
HTTPRequest.line.limit
속성은http.properties
에서7k
값으로 설정되었습니다.Apigee 비공개용 Apigee에 구성된 요청 줄 크기의 한도를 나타냅니다. 클라우드는 7KB입니다.
Apigee 지원팀의 도움이 더 필요하면 다음 페이지로 이동하세요. 진단 정보를 수집해야 합니다.
진단 정보 수집 필요
다음 진단 정보를 수집한 후 Apigee Edge 지원팀에 문의하세요.
퍼블릭 클라우드 사용자인 경우 다음 정보를 입력합니다.
- 조직 이름
- 환경 이름
- API 프록시 이름
414
오류를 재현하는 데 사용된curl
명령어를 완료합니다.- API 요청에 대한 추적 파일
Private Cloud 사용자인 경우 다음 정보를 입력합니다.
- 실패한 요청에 대해 발견된 전체 오류 메시지
- 조직 이름
- 환경 이름
- API 프록시 번들
- 실패한 API 요청의 추적 파일
414
오류를 재현하는 데 사용된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