Server

윈도우 time_wait 없애기

by Progress posted Mar 08, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

윈도우 time_wait 없애기


TIME_WAIT 상태가 늘어나면 서버의 소켓이 고갈되어 커넥션 타임아웃이 발생한다는 얘기를 한다.

6553x......


TCP 4 way hand shake(연결끊기) 과정

1. A가 B에게 FIN(연결끊기)fmf qhsosek.

2. B가 A에게 ACK(요청에 대한 응답)을 보낸다.

3. B가 A에게 FIN(연결끊기)을 보낸다. (이때 A는 TIME_WAIT 상태로 들어간다.)

4. A가 B에게 ACK(요청에 대한 응답)을 보내면 연결이 끊어진다.

즉, A가 B로 부터 받은 FIN 에 대한 ACK 를 보내지 못하고 있었던 것이다. B 입장에서는 ACK 오지 않으니, 계속해서 FIN 을 날렸을 수도 있고, 새로운 새션을 생성해서 다시 FIN 에 대한 ACK를 받지 못했을 수도 있다. 그렇게 계속 TIME_WAIT가 증가한듯 하다.

 

우선 WIndows 서버에서 해결할 수 있는 방법은 TcpTimeWaitDelay 를 설정하는 것이었다.

일반적인 서버환경에서는 Default wait 시간이 있어, TIME_WAIT 상태에서 미응답 상태일 경우 해당 TIME_WAIT를 삭제한다.

Windows 서버에서는 Regstry에 TcpTimeWaitDelay를 설정하여 적용 후 재부팅 해야한다.....그래서 재부팅했다...

regedit를 이용하여

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters

새 REG_DWORD 값 TcpTimedWaitDelay를 생성하고 값을 10진수 30(16진수 0x0000001e)으로 설정하였다.

 

적용후 반드시 재부팅