<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[服务器出现 server kernel: ip_conntrack: table full, dropping packet. 问题]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[服务器技术]]></category>
<pubDate>Mon, 13 Aug 2012 07:08:38 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	终端登录系统后检查日志发现 ip_conntrack: table full, dropping packet. 错误：<br/><div class="code"><br/># vi /var/log/messages<br/>...<br/>Nov&nbsp;&nbsp;8 08:54:58 server kernel: ip_conntrack: table full, dropping packet.<br/>Nov&nbsp;&nbsp;8 08:55:03 server kernel: printk: 49 messages suppressed.<br/>Nov&nbsp;&nbsp;8 08:55:03 server kernel: ip_conntrack: table full, dropping packet.<br/>Nov&nbsp;&nbsp;8 08:55:08 server kernel: printk: 49 messages suppressed.<br/>...<br/></div><br/>查看当前 ip_conntrack 记录，已经有 36271，超过了系统设置的 16640 （ip_conntrack_max 默认设置为系统内存（MB 为单位）的 16倍）：<br/><div class="code"><br/>$ head /proc/slabinfo <br/>slabinfo - version: 2.1<br/># name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : tunables&nbsp;&nbsp;&nbsp;&nbsp;: slabdata&nbsp;&nbsp; <br/>ip_conntrack_expect&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;192&nbsp;&nbsp; 20&nbsp;&nbsp;&nbsp;&nbsp;1 : tunables&nbsp;&nbsp;120&nbsp;&nbsp; 60&nbsp;&nbsp;&nbsp;&nbsp;8 : slabdata&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br/>ip_conntrack&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;36271&nbsp;&nbsp;36216&nbsp;&nbsp;&nbsp;&nbsp;384&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp;1 : tunables&nbsp;&nbsp; 54&nbsp;&nbsp; 27&nbsp;&nbsp;&nbsp;&nbsp;8 : slabdata&nbsp;&nbsp; 1612&nbsp;&nbsp; 1612&nbsp;&nbsp;&nbsp;&nbsp;108<br/><br/># cat /proc/sys/net/ipv4/ip_conntrack_max<br/>16640<br/></div><br/>kernel 用 ip_conntrack 模块来记录 iptables 网络包的状态，并保存到 table 里（这个 table 在内存里），如果网络状况繁忙，比如高连接，高并发连接等会导致逐步占用这个 table 可用空间，一般这个 table 很大不容易占满并且可以自己清理，table 的记录会一直呆在 table 里占用空间直到源 IP 发一个 RST 包，但是如果出现被攻击、错误的网络配置、有问题的路由/路由器、有问题的网卡等情况的时候，就会导致源 IP 发的这个 RST 包收不到，这样就积累在 table 里，越积累越多直到占满，满了以后 iptables 就会丢包，出现外部无法连接服务器的情况。<br/><br/>知道问题就好办了，要么增加 table 容量以便能记录更多的连接信息（会消耗一点内存），要么就卸载 ip_conntrack 模块。<br/><br/>查看当前 ip_conntrack_max 设置，然后增加两倍到 131072：<br/><div class="code"><br/># cat /proc/sys/net/ipv4/ip_conntrack_max<br/>16640<br/><br/># echo 131072 &gt; /proc/sys/net/ipv4/ip_conntrack_max<br/></div><br/>或者<br/><div class="code"><br/># sysctl -w&nbsp;&nbsp;net.ipv4.netfilter.ip_conntrack_max=131072<br/></div><br/>还有一个参数 ip_conntrack_tcp_timeout_established 需要注意，默认情况下 timeout 是5天（432000秒），需要的话可以减半：<br/><div class="code"><br/># cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established <br/>432000<br/><br/># sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=216000<br/>net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 216000<br/></div><br/>综合一下，最好把这些内核参数加到 sysctl.conf 文件以便系统启动后自动读取中：<br/><div class="code"><br/># vi /etc/sysctl.conf<br/>...<br/>net.ipv4.netfilter.ip_conntrack_max = 131072<br/>net.nf_conntrack_max = 131072<br/>net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 216000<br/></div><br/>还有一种办法就是直接卸载 ip_conntrack 模块，这个办法最简单，到在 /etc/sysconfig/iptables-config 文件里删除或者注释掉 ip_conntrack_netbios_ns 后重启系统：<br/><div class="code"><br/># vi /etc/sysconfig/iptables-config<br/>#IPTABLES_MODULES=&quot;ip_conntrack_netbios_ns&quot;<br/><br/># shutdown -r now<br/></div><br/>Tags - <a href="http://www.dzhope.com/tags/ip_conntrack/" rel="tag">ip_conntrack</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] 服务器出现 server kernel: ip_conntrack: table full, dropping packet. 问题]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>