分类: LINUX
2012-02-21 15:35:06
使用netstat -an查看系统连接状态时发现存在大量TIME_WAIT连接,均为mysql。然后google了一下,下面贴出解决办法。
[root@blog~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:11211 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:43389 127.0.0.1:3306 TIME_WAIT
tcp 0 0 127.0.0.1:43388 127.0.0.1:3306 TIME_WAIT
tcp 0 0 127.0.0.1:43387 127.0.0.1:3306 TIME_WAIT
tcp 0 0 127.0.0.1:43382 127.0.0.1:3306 TIME_WAIT
tcp 0 0 127.0.0.1:43381 127.0.0.1:3306 TIME_WAIT
tcp 0 0 127.0.0.1:43380 127.0.0.1:3306 TIME_WAIT
tcp 0 0 127.0.0.1:43379 127.0.0.1:3306 TIME_WAIT
tcp 0 0 127.0.0.1:43378 127.0.0.1:3306 TIME_WAIT
tcp 0 0 127.0.0.1:11211 127.0.0.1:38792 ESTABLISHED
tcp 0 0 127.0.0.1:11211 127.0.0.1:38799 ESTABLISHED
解决办法
#vi /etc/sysctl.conf,在文件最后加入如下内容
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
#sysctl -p //使修改内核生效
选项解释
net.ipv4.tcp_syncookies = 1 //表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭.
net.ipv4.tcp_tw_reuse = 1 //表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭.
net.ipv4.tcp_tw_recycle = 1 //表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭.
net.ipv4.tcp_fin_timeout //修改系統默认TIMEOUT时间.