2015. 10. 6. 09:16 IT/ubuntu
TIME_WAIT 이 떨어지지 않는다.
웹서버가 3대.
ubuntu 14.04 LTS / nginx / php-fpm
각서버의 ESTABLISHED 는 200 정도 소화하고 있던 상황에서 갑자기 TIME_WAIT 이 55,000 까지 치솟았다.
nginx 도움으로 503에러는 뜨지 않았지만 php 의 mysql_connect 가 먹통되기 시작한 상황.
netstat -na | grep TIME_WAIT 을 때려보자 mysql 서버 IP에서 TIME_WAIT 이 걸리기 시작했다.
nginx, php-fpm 을 수차례 재시작을 했지만 TIME_WAIT 은 고공행진 -_-;;;
sysctl 을 아래처럼 수정해봤지만 안먹히는건지 효과가 없는건지 차도가 없었다.
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close_wait=10
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_fin_wait=10
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=10
방법을 찿다가 커널관련 문서에서 tcp 세팅하는방법이 명시되어 있었다.
주석으로 전문가가 아니면 하지 말라고 쓰여있었지만.. 서버가 죽어가는 상황에서 어찌하리..
tcp_tw_recycle : time_wait 포트를 빠른속도로 재활용할수 있게 해준다. (일부 로드벨런스 장비에서 문제가 발생할수 있다고 한다)
tcp_tw_reuse : 새로운 커넥션이 time_wait 포트를 사용할수 있게 해준다.
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
위와같이 날려주자 TIME_WAIT이 55,000에서 1,000까지 쑤우우우욱 내려갔다.
아침밥이 소화되는 기분이 느껴지는 순간이였다.
참고 : http://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html
'IT > ubuntu' 카테고리의 다른 글
우분투 레포 다음서버로 변경하기 / 업데이트 빠르게 (0) | 2015.07.28 |
---|---|
서버 tcp 상태 커맨드 라인에서 확인하기. (0) | 2015.07.23 |