본문 바로가기
IT 자료

java Broken Pipe 에러

by 성곤 2018. 3. 12.
반응형


얼마 전 broken pipe에러가 발생했다.


로컬, 개발서버에서는 아무런 문제가 발생하지 않았지만,


운영서버에서만 broken pipe에러가 발생했다.



생소한 에러라서 찾아봤다.


broken pipe에서에서 pipe는 소켓을 의미한다고 한다.


클라이언트와 서버 간에 연결이 끊어지면 이 에러가 발생한다고 한다.


클라이언트 혹은 서버에서 문제일 수도 있다고 한다.

그래서 그냥 broken pipe에러를 무시하던가 exception 처리로 무시하라고 한다. (별 거 아닌 듯이)



우리는 이 문제를 해결하기 위해 sysout도 여기저기 찍어보고(운영서버에 로그를 직접적으로 찍기 위해)


에러 발생 지점에 try catch로 예외처리도 다 했지만, 잡을 수가 없었다.



안타깝게도 문제의 원인은 서버에 있었다.(WEB서버? WAS서버?  아마도 WEB서버일 것 같음)


해당 호출이 발생할 때, 정확히 5분0초에 연결이 끊어짐을 확인하였다.


Thread sleep를 통해 테스트를 했고, 정확히 5분 0초에 끊어짐을 확인했다.



해결방법은 서버의 timeout을 늘려주던가, 요청을 더 빠르게 처리할 수 있도록 수정하는 방법뿐이다.


구글에 'read timeout', 'request timeout'이라고 검색하면 대처 방법이 많이 나온다.


아, 나는 (본의 아니게)후자를 선택했고, 오래걸리던 소스를 수정하였다.


반응형