서버 TIME_WAIT 많이 발생한 오류
갑자기 서버의 TIME_WAIT 가 많이 생성되었다.
1521 포트로 연결된 것으로 보아
오라클 서버로 접속하는 상태로 보인다.
TIME_WAIT 는 TCP 상태 중 우아한 종료를 하기 위해서
클라이언트에서 서버에 종료를 요청하고
서버의 종료확인을 받지 않은 상태이다.
처음엔 오라클 설정에 문제가 있거나
PHP에서 오라클 접속을 하고 CLOSE를 하지 않아서
발생하는 문제로 보았다.
하지만
오라클은 300개를 받을 수 있도록 설정되어 있는데
서버의 1521 TIME_WAIT 세션수는 2,700개를 육박하고 있었다.
/proc/sys/net/tcp_fin_timeout
기본값이 60인데 이를 10으로 수정하였다.
60초에서 10초로 변경한 것이다.
TIME_WAIT 상태에서
10초가 지나면 CLOSE 상태로 바꾸는 것이다.
/proc/sys/net/tcp_tw_recycle
기본값이 0인데 이를 1로 변경하였다.
/proc/sus/net/tcp_tw_reuse
기본값이 0인데 이를 1로 변경하였다.
위 두개는 TIME_WAIT 상태에서
그 세션을 바로 재활용 가능하도록 해주는 설정입니다.
재부팅을 해야 적용이 되므로
재부팅 후 확인했더니
기적적으로 TIME_WAIT는 10개를 넘지 않는다.
1521 포트로 연결된 것으로 보아
오라클 서버로 접속하는 상태로 보인다.
TIME_WAIT 는 TCP 상태 중 우아한 종료를 하기 위해서
클라이언트에서 서버에 종료를 요청하고
서버의 종료확인을 받지 않은 상태이다.
처음엔 오라클 설정에 문제가 있거나
PHP에서 오라클 접속을 하고 CLOSE를 하지 않아서
발생하는 문제로 보았다.
하지만
오라클은 300개를 받을 수 있도록 설정되어 있는데
서버의 1521 TIME_WAIT 세션수는 2,700개를 육박하고 있었다.
/proc/sys/net/tcp_fin_timeout
기본값이 60인데 이를 10으로 수정하였다.
60초에서 10초로 변경한 것이다.
TIME_WAIT 상태에서
10초가 지나면 CLOSE 상태로 바꾸는 것이다.
/proc/sys/net/tcp_tw_recycle
기본값이 0인데 이를 1로 변경하였다.
/proc/sus/net/tcp_tw_reuse
기본값이 0인데 이를 1로 변경하였다.
위 두개는 TIME_WAIT 상태에서
그 세션을 바로 재활용 가능하도록 해주는 설정입니다.
재부팅을 해야 적용이 되므로
재부팅 후 확인했더니
기적적으로 TIME_WAIT는 10개를 넘지 않는다.
댓글
댓글 쓰기