어플리케이션

FIN_WAIT_2, CLOSE_WAIT 에 발생 원인 및 조치 방법에 대해 알아보겠습니다.

forward error correction Circle 2024. 2. 16. 08:58
반응형

 서버를 운영하던 중 HP-UX 서버에서 Close_Wait 숫자에 제대로 줄어들지 않아 서버의 서비스 가능한 세션 수를 초과하여 서비스를 안되는 이슈가 있었습니다.

 

1) 이슈 상황 정리

 ⅰ. Client 측에서는 FIN_WAIT2 상태 / Server 측에서는 CLOSE_WAIT 상태

 ⅱ. Server 의 네트워크 자원 부하

 

위와 같은 이슈상황이 발생한 원인에 대해서 알아보도록 하겠습니다.

연결이 정상적으로 연결이 끊어지는 경우에는 문제가 발생하지 않지만, 어느 원인에서인지 간혹 FIN_WAIT2, CLOSE_WAIT 상태로 남아있는 경우가 있습니다.

해당 상태로 많이 남는 경우 Client 측이나 Server 측의 네트워크 자원 고갈로 인해 문제가 발생 할 수 있습니다.

아래의 화면은 실제 Client 와 Server 가 통신 시에 어떻게 통신하는 지에 대해 그렸습니다.

Client 와 Server 에서의 소켓 통신 일 경우 위의 그림과 같이 생성이 됩니다.

여기서 Server 는 CLOSE_WAIT 상태가 되고, Client 는 FIN_WAIT2 상태에서 세션이 줄어들지 않는 경우가 있습니다.

해당 증상일 경우는 OS단의 파라미터 설정 값과 연관이 있습니다.

HP-UX 서버를 제외하고는 일정 시간이 지나면 자동으로 세션이 닫히게 설정이 되어있습니다. 네트워크 연결이 많아질 경우 해당 시간을 조절이 필요하므로 아래 문제해결 방법으로 간단히 설명 드리겠습니다.

* 문제 해결 방법

1. 레드헷 계열

1) 현재 설정 확인 명령어 : cat /proc/sys/net/ipv4/tcp_fin_timeout

2) Default 설정 값 : 60초

3) 변경 시 명령어 : echo "30" > /proc/sys/net/ipv4/tcp_fin_timeout

 

2. 윈도우 계열

1) 현재 설정 확인 레지스트리 :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameter 내

TCPFinWait2Delay, TCPFinWaitDelay

2) Default 설정 값 : 2분

3) 해당 레지스트리의 설정 값 변경

3. AIX

1) 현재 설정 확인 명령 어 : /usr/sbin/no -a | grep tcp_timewait

2) Default 설정 값 : 15초

3) 변경 시 명령어 : /usr/sbin/no tcp_timewait =1

 

4. HP-UX

1) 현재 설정 확인 명령어 : ndd -get /dev/tcp tcp_time_wait_interval ( 1 / 1000 = 1 초)

2) Default 설정 값 : 0초 (무제한)

3) 변경 시 명령어 : ndd -set /dev/tcp tcp_time_wait_interval 60000 (1분)

반응형