오류관리

Broken Pipe

k9e4h 2019. 11. 8. 11:22

cause of ServletException.

java.net.SocketException: Broken pipe

: 일반적으로 잦은 입출력으로 호출로 발생된다. 처리 중인 요청(또는 응답)을 사용자가 기다리지 않고, '새로고침(또는 종료, 연속 클릭 등)' 를 자주 실행하게 되면, 소켓이 끊어져서 발생된다

java.net.SocketException: Connection reset by peer: secket write error 

: write 시 상대방 socket close 된경우

java.net.SocketException: Connection reset

: read 시 상대방 socket close 된경우

java.io.IOException: Broken pipe

: receiver에서 송신받은 데이터를 제때 처리하지 못하는 상황(네트워크가 느리거나 서버의 CPU가 max인 경우 등)에서 sender가 계속 보내는 경우

 

WAS, DBMS 서버 등과 연결되는 Socket 관련 프로그램에서 다음과 같은 오류 메세지가 자주 발생한다

 

java.net.SocketException: Broken pipe

 

Client와 WAS쪽과 통신이 단절되었을 경우 발생하는 오류

일반적으로 서비스 오류라기보다는 서버 환경 문제로 인해 발생하는 오류이다

 

두 소켓상의 통신에서 소켓을 담당하던 프로세서가 갑작스런 이상으로 종료가 된상황에서 상대 소켓은 이를 알지 못하고 데이터를 전송하려 할때 발생하게 된다.

(ex, 클라이언트 화면에서 요청을 하였는데 서버에서 작업을 완료하여 클라이언트로 결과를 넘겨주기 이전에 네트워크가 끊겼을 경우, 

예를 들어, 클라이언트가 정지버튼을 누른다든지, 브라우저를 종료한다든지, 다른 화면으로 이동하였다든지, 클라이언트 화면에서 해당 data가 조회작업이 완료되기 전에 재조회를 한다든지)

최초 요청한 정보가 사라졌기 때문에 서버 측에서 작업 결과를 전달할 곳이 없어서 발생하는 현상이다.

 

대용량 데이터 조회 중에 Runtime Exception이 발생하는 경우에는 서버 측의 TimeOut 설정을 확인해보자.

WAS 별로 체크해야 하는 사항이 조금씩 차이가 있겠다만,

Jeus의 경우, WAS(Jeus)와 Web Server(Webtob) 간의 TimeOut 설정을 확인해보자

WAS측 TimeOut과 Web Server측 TimeOut을 다시 설정하시면 대부분 해결이 된다. 특히 Web Server 사이드에서 보내주는 TimeOut에 걸렸을 가능성이 높다.

 

 

http://m.blog.daum.net/sssssssim/49?tp_nil_a=1

https://lookingfor.tistory.com/entry/%EC%9E%90%EB%B0%94-ExceptionBroken-pipe-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95

https://sexymoonji.tistory.com/2

반응형