웹서버가 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

Posted by xanasia

블로그 이미지
xanasia

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함