1. FIN Time Wait 세션 확인

프로그램이 수행될 때 netstat -nt | grep TIME_WAIT | wc -l 명령어를 통해 세션상태를 확인하여 TIME_WAIT 상태의 세션의 개수를 확인할 수 있다.

TIME_WAIT 상태 해제되지 않은 대량의 연결 시도가 로컬 포트에 할당되고 해제되지 않아 유효한 범위의 포트 번호를 잠식하여 발생한다.
할당된 포트가 해제될 때 까지 새로운 연결을 설정할 수 없게 하는 상황이 발생된다.추측하여 이런 저런 검색을 통해

2. FIN Time Wait 시간 조절

 sysctl.conf 에 아래 파라미터들을 추가하여 TIME_WAIT 을 발생시키던 세션수가 감소하는 것을 확인할 수 있다.
추가한 파라미터 및 역할을 아래와 같다. 
 . ip_local_port_range :: 로컬 포트로 사용할 수 있는 주소의 범위 
 . tcp_tw_recycle : TIME_WAIT 상태에 있는 연결을 빠르게 재활용 할 수 있도록 하기 위한 값,  기본적으로 비활성화 되어 있으므로 값을 추가하여 넣어줘야 함 
 . tcp_fin_timeout FIN_WAIT2 상태에 있는 보유 시간 설정 (기본 60초 -> 10초)
# vi /etc/sysctl.conf
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10

3. 시스템에 적용하기

내용 추가 후 sysctl -p 명령어를 통해 바로 적용할 수 있다. 

※유의사항

net. ipv4 .tcp_tw_recycle을 사용하면 조건에 따라 TCP 세션 이 부풀어 없게되는 문제가 발생할 수도있다고 하니 관리하는 시스템 성격에 따라 유의하여 적용해야 할 것 같다. 


반응형
블로그 이미지

조이풀 라이프

Lift is short, enjoy the life

,