서버를 운영하던 중 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분)
'어플리케이션' 카테고리의 다른 글
취약점 및 취약점별 유형에 대해 알아보겠습니다. (0) | 2024.03.07 |
---|---|
사이버 공격 현황과 사이버 킬 체인에 대해 알아보겠습니다. (0) | 2024.03.04 |
SFTP 에 대해 알아보겠습니다. (0) | 2024.02.09 |
SSL 인증서의 필요 및 등록 방법에 대해 알아보겠습니다. (0) | 2023.12.27 |
HTTP Tomcat 커넥터 설정(workers.properties)에 대해 알아보도록 하겠습니다. (1) | 2023.12.04 |