kernel time_wait

# 다음 netstat 로 time_wait 보면 PID/Program name 이 - 표시된 케이스가 있다.
netstat -natop | grep -i time_wait
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name     Timer

tcp        0      0 1.1.1.1:12345       2.2.2.2:10000      TIME_WAIT   -                    timewait (20.69/0/0)

# - 는 해당 포트를 사용하던 /proc/$PID 가 사라져(종료) 커널이 관리하게되는 경우다.
# 커널이 잡고 있는 time_wait 포트를 없애기 위해서는 네트워크를 종료하는 방법이 있지만 서비스 중인 서버에서는 사용할 수 없다.
/etc/init.d/network restart

# 드문 경우지만 MSL(Maximum Segment Lifetime, tcp 세그먼트가 네트워크에 존재하는 최대시간으로 보통 2분)이 넘어가서 서버로 부터 fin 을 받지 못할때 발생할 수 있다.
https://en.wikipedia.org/wiki/Maximum_segment_lifetime
# tcp_tw_reuse=1 로 재사용되지 않으면 net.ipv4.tcp_fin_timeout ~ MSL 시간이 지나면 사라진다.

# tcp_fin_timeout 확인
sysctl net.ipv4.tcp_fin_timeout

comments:

댓글 쓰기