Linux

TIME_WAIT 없애는 방법

I장군T 2022. 8. 4. 19:26
반응형

서비스를 운영중에 503 error 발생. 서버에 부하가 있나 살폈지만 부하는 전혀.. 널널하다.

원인을 찾다보니 TCP 쪽 문제일 가능성이 있다는 결론

소켓 생성 후 종료 시 TIME_WAIT상태가 되는데 생성/종료가 빈번하다보니 TIME_WAIT가 너무 많이 걸려 더이상 생성을 못해

connect fail 이 떨어지는 거 같음.

 

해결 방법

1. 사용가능한 포트수를 늘린다.(기본적으로 약 28,000개로 설정되어 있음)

현재 상태 조회(cat /proc/sys/net/ipv4/ip_local_port_range)
sysctl -w net.ipv4.ip_local_port_range="1024 65535"

2. TIME_WAIT일때 재사용할 수있게 설정을 변경할 수 있다.

sysctl -w net.ipv4.tcp_tw_reuse="1"

reuse 옵션을 사용할려면 timestamps 옵션도 "1"이여야 한다.(default "1")

timestamps 상태 확인

"1"이 아니면 변경

sysctl -w net.ipv4.tcp_timestamps="1"

 

reboot 되면 설정이 사라질 수 있으니 /etc/sysctl.conf에 설정을 추가

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_timestamps = 1

 

반응형