CLOSE_WAIT가 많음 서버에 큰 영향이 있나요??
글쓴이: sayung / 작성시간: 토, 2003/10/04 - 9:26오전
지금 서버가 하나있는데 한번씩 보면 CLOSE_WAIT가 조금씩 생깁니다.
보통은 시간이 지나면 없어지는데 어떤건 계속 갯수가 오르는 수고 있습니다.
한번은 200개 정도 까지 CLOSE_WAIT이 생긴 적도 있습니다.
보통 netstat로 잡고 lsof 로 잡아서 프로세스를 kill시키는데..
CLOSE_WAIT 많이 있음 얼마나 서버에 않좋나요?
그리고 않좋으면 얼마까지는 봐 줄만 한가요??
서버 사양은 정확히는 모르기만 괞찬은 사양으로 알고 있고요.
네트윅도 크게 딸린다고는 생각이 안들거든요..
내부로 통신하며 100M가 스위치 허브로 물려있고요.
프로 그램은 제가 잘모르니 뭐라고 할수 는 없는 상태에요.
그냥 CLOSE_WAIT이 많음 서버에 얼마나 무리가 갈까요??
Forums:
다른 분은 FIN_WAIT2 가 많아지면 어떻게 하냐고 물으시던데, 여긴
다른 분은 FIN_WAIT2 가 많아지면 어떻게 하냐고 물으시던데, 여긴 CLOSE_WAIT이군요. CLOSE_WAIT 은 상대가 접속을 끊었을 때, 이쪽에서도 감지하고 close 를 명시적으로 하길 기대한다는 상황입니다.
이쪽에서는 close 신호에 대해 접수 했다고 ACK를 이미 보낸 상황이며, 상대는 현재 FIN_WAIT2 상황입니다.
netstat에서 많아도 상관없는 것은 TIME_WAIT 이며 나머지들은 모두 뭔가 처리해주어야하는 것들입니다.
대개 close를 명시적으로 하지 않는데서 일어나는 것입니다.
---
http://coolengineer.com
pynoos 님 말씀이 맞습니다. 부연설명을 하자면TCP 세션이
pynoos 님 말씀이 맞습니다. 부연설명을 하자면
TCP 세션이 끊길때, client 가 FIN 메세지를 보내게 되면 ,
server 쪽 커널에서는 FIN 메세지를 수신버퍼에 넣어두고 ACK 메세지를 보내고 CLOSE_WAIT 상태로 있게 됩니다.
server 쪽 해당프로세스에서 수신버퍼의 FIN 을 읽고서, close() 를 호출하지 않으면 계속 이상태로 있게 됩니다. close() 를 호출하게 되면 client 쪽으로 FIN 을 보내고, 다시 ACK 를 받게 되면 비로소 TCP 세션이 종료하게 됩니다.
중간에 kill 로 강제적으로 죽이게 되면 저 과정을 커널이 알아서 해주게 되는 거죠.
그런데 HTTP 프로토콜 같은 경우는 수없이 많은 접속과 종료를 반복하게 되기 때문에 거의 ESTABLISHED 수만큼 CLOSE_WAIT 가 보일 수 있습니다.
그러나 고정적으로 있는 것이 아니고 시간에 따라서 계속 증가한다면 프로그램 자체 문제일 가능성이 크구요.
댓글 달기