<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[静怡家园]]></title> 
<link>http://www.zhanghaijun.com/index.php</link> 
<description><![CDATA[书山有路勤为径，学海无涯苦作舟！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[静怡家园]]></copyright>
<item>
<link>http://www.zhanghaijun.com/post//</link>
<title><![CDATA[kernel TCP time wait bucket table overflow]]></title> 
<author>碟舞飞扬 &lt;webmaster@zhanghaijun.com&gt;</author>
<category><![CDATA[服务器类]]></category>
<pubDate>Mon, 11 Jun 2012 02:55:44 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post//</guid> 
<description>
<![CDATA[ 
	故障表现：<br/><br/>一：系统日志频繁出现：kernel: TCP: time wait bucket table overflow<br/><br/>二：服务器连接中，有大量TIME_WAIT<br/><br/>netstat -n &#124; awk '/^tcp/ &#123;++S[$NF]&#125; END &#123;for(a in S) print a, S[a]&#125;' <br/>TIME_WAIT 5009<br/>FIN_WAIT1 19<br/>ESTABLISHED 3<br/>FIN_WAIT2 2<br/>SYN_RECV 14<br/>CLOSING 146<br/>LAST_ACK 1<br/><br/>解决方案：<br/><br/>vi /etc/sysctl.conf<br/><br/>增加以下几行：<br/><br/>net.ipv4.tcp_fin_timeout = 30<br/>net.ipv4.tcp_keepalive_time = 1200<br/>net.ipv4.tcp_syncookies = 1<br/>net.ipv4.tcp_tw_reuse = 1<br/>net.ipv4.tcp_tw_recycle = 1<br/>net.ipv4.ip_local_port_range = 1024 65000<br/>net.ipv4.tcp_max_syn_backlog = 8192<br/>net.ipv4.tcp_max_tw_buckets = 5000 ##已经修改<br/><br/>　说明：<br/>　　net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时，启用cookies来处理，可防范少量SYN攻击，默认为0，表示关闭；<br/>　　net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接，默认为0，表示关闭；<br/>　　net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收，默认为0，表示关闭。<br/>　　net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭，这个参数决定了它保持在FIN-WAIT-2状态的时间。<br/>　　net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候，TCP发送keepalive消息的频度。缺省是2小时，改为20分钟。<br/>　　net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小：32768到61000，改为1024到65000。<br/>　　net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度，默认为1024，加大队列长度为8192，可以容纳更多等待连接的网络连接数。<br/>　　net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量，如果超过这个数字，TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000，改为5000。对于Apache、Nginx等服务器，上几行的参数可以很好地减少TIME_WAIT套接字数量，但是对于Squid，效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量，避免Squid服务器被大量的TIME_WAIT套接字拖死。<br/><br/>　　执行以下命令使配置生效：<br/><br/>sysctl -p<br/><br/>观察几分钟后，报错消失，TIME_WAIT连接数减少了。<br/><br/>netstat -n &#124; awk '/^tcp/ &#123;++S[$NF]&#125; END &#123;for(a in S) print a, S[a]&#125;'<br/><br/>TIME_WAIT 3647<br/>SYN_SENT 1<br/>FIN_WAIT1 14<br/>ESTABLISHED 2<br/>FIN_WAIT2 2<br/>SYN_RECV 17<br/>CLOSING 132<br/>Tags - <a href="http://www.zhanghaijun.com/tags/tcp/" rel="tag">tcp</a> , <a href="http://www.zhanghaijun.com/tags/time/" rel="tag">time</a> , <a href="http://www.zhanghaijun.com/tags/wait/" rel="tag">wait</a>
]]>
</description>
</item><item>
<link>http://www.zhanghaijun.com/post//#blogcomment</link>
<title><![CDATA[[评论] kernel TCP time wait bucket table overflow]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.zhanghaijun.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>