1. WAS 버전 : IBM WAS All
2. OS : All
3. Error 발생 시점 : request 의 body 가 firewall 등에 의해서 잘리거나 잘못들어온 경우 or
Ajax post 방식을 사용하고 있는데 Content-Length 에 비해 보다 작은 body 가 들어오거나 body 가 0 인 경우
IHS 의 Timeout 값인 300 초를 기다린 후에 IO 관련 Timeout 발생
4. Error message :
SRVE0133E: An error occurred while parsing parameters. java.io.IOException: post body contains less bytes than specified by content-length
at com.ibm.ws.webcontainer.servlet.RequestUtils.parsePostData(RequestUtils.java:521)
at com.ibm.ws.webcontainer.srt.SRTServletRequest.parseParameters(SRTServletRequest.java:789)
at com.ibm.ws.webcontainer.srt.SRTServletRequest.getParameter(SRTServletRequest.java:412)
5. 예상 이유 :
주로 Browser 의 이슈(특히 IE7 or 8) 이거나 Network 방화벽등이 Body 를 제대로 Web Server 로 전달하지 못하는 경우에 발생
특히, Timeout 후에 client 는 200 code 를 return 받고 Content-length : 0 이 들어와서 error handling 도 어려움
6. 조치 방안:
근본적인 원인은 Browser 의 버그등을 해결하여 올바르게 HTTP body 를 보내주는 것이나 해결이 쉽지 않으므로
다음과 같은 대안을 사용가능
IBM HTTP Server 6.1.0.41, 7.0.0.21, 8.0.0.2 and later 에서 mod_reqtimeout 모듈을 사용 가능
(단, 내부 plugin bug 가 있어서 7.0.0.25 이상의 fixpack 필요, 6.1 과 8.0 도 최신 fixpack 필요해 보임)
IBM HTTP Server(웹서버) 차원에서 RequestReadTimeout 을 사용하여 body 가 잘못들어온 경우에 빠르게 Timeout 을 발생시키고
정상적인 400 Bad Requets error code 를 client 에 return 하여 정상적인 handiling 을 가능하도록 할수 있음
참고:
http://serverfault.com/questions/432932/how-to-debug-apache-timeouts
http://publib.boulder.ibm.com/httpserv/manual60/mod/mod_reqtimeout.html
http://www-01.ibm.com/support/docview.wss?uid=swg1PM44816
'IBM - old > WAS 문제&해결' 카테고리의 다른 글
addNode 수행시에 large application 에 의한 OOM 발생 (0) | 2016.05.30 |
---|---|
native library 사용을 위한 LIBPATH 나 java.library.path 설정이 잘 안먹는 경우 (0) | 2016.05.30 |
64bit Linux 환경(RHEL) 에서 Installation Manger 설치 실패 (0) | 2016.05.30 |
WebSphere Portal 과 LTPA token 을 이용한 SSO 에서 한 방향으로 SSO 실패 (0) | 2016.05.30 |
Context Root 에 있는 디렉토리 명대로 IHS 내부에서 해당 contents 를 찾음 (0) | 2016.05.30 |
댓글