">

CLOSE_WAIT



  그림에서 Client가 연결을 종료하기 위해 FIN을 Server로 보낸다. 그리고 FIN에 대한 ACK가 있기 전까지 Server은 CLOSE_WAIT 상태가 된다. 

CLOSE_WAIT 상태가 사라지지 않고 계속 쌓이게 되면 서버에서는 더 이상 서비스 처리를 못하는 상태가 된다. 

CLOSE_WAIT 상태를 해결하는 방법을 시스템의 설정을 바꾸는 방법에 대한 설명이 많았는데 이렇게는 근본적인 원인을 해결할 수 없다. 


  여러 방법들이 있겠지만, 개인적으로 겪은 부분만 정리해 본다. 문제의 원인은 'DefaultHttpClient' 때문이었다. 

사용하는 부분에서 잘못된 것은 없었지만 CLOSE_WAIT 현상이 발생했다. 

그리고 같은 소스로 여러 서버에서 테스트를 진행했을 때 이 현상이 발생하는 곳도 있고, 

어느정도 CLOSE_WAIT가 쌓이다가 없어지는 서버도 있었다. 그래서 변경한 부분은 'DefalutHttpClient'를 '

CloseableHttpClient'로 변경했다. 거짓말처럼 말끔하게 CLOSE_WAIT가 사라졌다. 

DefaultHttpClient를 꼭 사용해야 한다면 아래 참고 자료 중 2번에 해당하는 링크를 참조하면 된다. 

그리고 읽어보면 좋을 것 같아서 추가한 것도 있다. 아래 참고 자료 3번에 해당하는 링크를 참조하면 된다. 

  


문제: CLOSE_WAIT가 쌓이는 현상 발생


해결: DefaultHttpClient -> CloseableHttpClient



참고 자료

[1] http://docs.likejazz.com/close-wait/

[2] http://pchun.tistory.com/60

[3] http://d2.naver.com/helloworld/377316

'프로그래밍 > JAVA' 카테고리의 다른 글

RSA 암호화 및 복호화  (0) 2016.12.26
자바로 크롤링 구현  (0) 2016.09.13
문자열을 나누거나 합치거나  (0) 2016.09.13

+ Recent posts