2016-12-01 4 views
0

IBM HTTP 서버가 '400 Bad Request'오류를 리턴하고 그 이유를 찾을 수없는 문제가 있습니다.IBM HTTP 서버가 리턴 한 400 Bad 요청 오류

요청은 Tibco SOAP 서비스에서 처리해야하는 SOAP 요청이지만 요청이 애플리케이션에 도달하지 못했습니다 (애플리케이션 로그에서 동일한 로그가 없음). HTTP 서버 수준에서 오류가 발생합니다. .

우리가 사용하는 HTTP 서버는 프록시 일 뿐이며 요청을 애플리케이션에 전달합니다. 액세스 로그에서

:

10.239.12.250 - - [/ 11월/2,016 17 : 10 : 23 : 19 +0000] "POST/OnlineCheck HTTP/1.1"400-300 "Java1.7.0 _40 "나는 오류 로그를 확인 300,021,637분의 300

:

[목 십일 10시 28분 19초 2016 17] [오류] 지정 (70007) 시간 제한이있다 만료 : 프록시 : 프리 페치 요청 본문이 [:: 1]에 실패했습니다 : 9876 (temp.adv.com) from 10.213.123.12

오류는 요청에서 5 분 후에 반환됩니다 (로그에서 알 수 있음).

어떤 점을 주목해야한다 :

오류가 (여러 클라이언트가 동일한 서비스를 사용하는) 하나의 클라이언트이며, 이것은 10 ~ 20 만 happends

그들은로드 밸런싱을위한 OSB/웹 로직을 사용하여 요청 비율은 무작위입니다. 로드 밸런서가 다시 보낸 경우 동일한 요청 (2.5 분 후에 응답이 없으면 서버가 올바르게 응답 함)

오류의 원인을 캡처하는 방법이 있는지 알고 싶습니다 에? 400 \ Bad Request Error의 가능한 이유는 무엇입니까?

답변

1

오류 메시지는 mod_proxy가 POST 본문을 기다렸다가 클라이언트에서 전송되지 않았 음을 의미합니다. 따라서 Content-Length 또는 Transfer-Encoding : 클라이언트가 보낸 청크가 유효하지 않아 400 상태 코드가 발생했습니다.

"mod_net_trace"에 대한 LoadModule의 주석 처리를 제거하여 이러한 요청에 대해 수행 된 I/O를 기록하고 어떤 종류의 본문이 예상되었는지 확인하고 사용할 수 없다고 확인할 수 있습니다.

전송 된 내용의 내부보기를 신뢰할 수없는 경우 패킷 캡처를 사용하여 동일한 내용을 확인할 수 있습니다.