kernel: nf_conntrack: table full, dropping packet解决办法
2014-04-04 17:40
411 查看
http://blog.sina.com.cn/s/blog_541a3cf10101b3bj.html
昨天上线cache后,防火墙高峰报道2W5有些不对劲,检查系统日志发现
Sep 6 18:05:07 localhost kernel: nf_conntrack:table full, dropping packet.
Sep 6 18:19:13 localhost kernel: nf_conntrack:table full, dropping packet.
Sep 6 18:35:03 localhost kernel: nf_conntrack:table full, dropping packet.
Sep 6 19:02:56 localhost kernel: nf_conntrack:table full, dropping packet.
之前用ab测试10W请求每次200测试就出现过apr_socket_recv: Connection timed out(110)终止
没在意,所以就PASS了;不料留下了隐患。
那么先参考http://blog.johntechinfo.com/technology/275这篇文章来优化下测试环境:
解决办法如其所述,对ip_conntrack的两个参数进行设置即可:
vi /etc/sysctl.conf
net.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
但是http://blog.yorkgu.me/2012/02/09/kernel-nf_conntrack-table-full-dropping-packet/这位仁兄文中说在centos上,需要这样设置
#默认超时时间为5天,作为一个主要提供HTTP服务的服务器来讲,完全可以设置得比较短
sysctl -p /etc/sysctl.conf
那么我们再试下10W请求每次2000来测试下是否有效:(用的是第一种net.nf_conntrack_max)
果然有效。
ip_conntrack就是linuxNAT的一个跟踪连接条目的模块,ip_conntrack模块会使用一个哈希表记录 tcp 通讯协议的established connection记录,当这个哈希表满了的时候,便会导致nf_conntrack: table full,dropping packet错误。
关于如何优化conntrack模块,有一篇文章对此进行了解释,http://wiki.khnet.info/index.php/Conntrack_tuning,或http://blog.yorkgu.me/wp-content/uploads/2012/02/netfilter_conntrack_perf-0.8.txt
查看目前 ip_conntrack buffer 的使用状况
cat /proc/slabinfo |grep conntrack
nf_conntrack_expect 0 0 208 39 2 :tunables 0 0 0 :slabdata 0 0 0
nf_conntrack 55606 73836 288 28 2 :tunables 0 0 0 :slabdata 2637 2637 0
55606 the number of currently active objects
73836 the total number of availableobjects
288 the size of each object inbytes
28 the number of pages with at least one active object
查出目前 ip_conntrack 记录最多的前十名 IP
cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2| sort | uniq -c | sort -nr | head -n 10
45772 127.0.0.1
72 203.81.70.29
64 211.139.190.202
62 203.81.72.85
58 211.139.151.42
58 211.139.146.167
57 203.81.72.81
56 221.179.8.36
56 203.81.72.82
54 203.81.70.21
现网加上了,看看明天高峰访问效果。
昨天上线cache后,防火墙高峰报道2W5有些不对劲,检查系统日志发现
Sep 6 18:05:07 localhost kernel: nf_conntrack:table full, dropping packet.
Sep 6 18:19:13 localhost kernel: nf_conntrack:table full, dropping packet.
Sep 6 18:35:03 localhost kernel: nf_conntrack:table full, dropping packet.
Sep 6 19:02:56 localhost kernel: nf_conntrack:table full, dropping packet.
之前用ab测试10W请求每次200测试就出现过apr_socket_recv: Connection timed out(110)终止
没在意,所以就PASS了;不料留下了隐患。
那么先参考http://blog.johntechinfo.com/technology/275这篇文章来优化下测试环境:
解决办法如其所述,对ip_conntrack的两个参数进行设置即可:
vi /etc/sysctl.conf
net.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
但是http://blog.yorkgu.me/2012/02/09/kernel-nf_conntrack-table-full-dropping-packet/这位仁兄文中说在centos上,需要这样设置
net.ipv4.netfilter.ip_conntrack_max =655350
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established= 1200
#默认超时时间为5天,作为一个主要提供HTTP服务的服务器来讲,完全可以设置得比较短
sysctl -p /etc/sysctl.conf
那么我们再试下10W请求每次2000来测试下是否有效:(用的是第一种net.nf_conntrack_max)
果然有效。
ip_conntrack就是linuxNAT的一个跟踪连接条目的模块,ip_conntrack模块会使用一个哈希表记录 tcp 通讯协议的established connection记录,当这个哈希表满了的时候,便会导致nf_conntrack: table full,dropping packet错误。
关于如何优化conntrack模块,有一篇文章对此进行了解释,http://wiki.khnet.info/index.php/Conntrack_tuning,或http://blog.yorkgu.me/wp-content/uploads/2012/02/netfilter_conntrack_perf-0.8.txt
查看目前 ip_conntrack buffer 的使用状况
cat /proc/slabinfo |grep conntrack
nf_conntrack_expect 0 0 208 39 2 :tunables 0 0 0 :slabdata 0 0 0
nf_conntrack 55606 73836 288 28 2 :tunables 0 0 0 :slabdata 2637 2637 0
55606 the number of currently active objects
73836 the total number of availableobjects
288 the size of each object inbytes
28 the number of pages with at least one active object
查出目前 ip_conntrack 记录最多的前十名 IP
cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2| sort | uniq -c | sort -nr | head -n 10
45772 127.0.0.1
72 203.81.70.29
64 211.139.190.202
62 203.81.72.85
58 211.139.151.42
58 211.139.146.167
57 203.81.72.81
56 221.179.8.36
56 203.81.72.82
54 203.81.70.21
现网加上了,看看明天高峰访问效果。
相关文章推荐
- kernel nf_conntrack: table full, dropping packet 解决办法
- nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法
- 老男孩教育每日一题-2017-04-19出现 kernel: nf_conntrack: table full, dropping packet.如何解决
- nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法 推荐
- [转]nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法
- 解决 nf_conntrack: table full, dropping packet 的几种思路
- 解决nf_conntrack: table full, dropping packet问题
- 解决 nf_conntrack: table full, dropping packet 的几种思路
- Resolving “nf_conntrack: table full, dropping packet.” flood message in dmesg Linux kernel log
- 解决(kernel: ip_conntrack: table full, dropping packet)的方法
- 解决 nf_conntrack: table full, dropping packet 的几种思路
- nf_conntrack: table full, dropping packet问题的解决思路
- 解决 linux 系统 nf_conntrack: table full, dropping packet 的几种思路
- 解决 nf_conntrack: table full, dropping packet 的几种思路
- iptables 报错 kernel: nf_conntrack: table full, dropping packet.
- 解决(kernel: ip_conntrack: table full, dropping packet)的方法
- ip_conntrack: table full, dropping packet.解决办法
- 解决 nf_conntrack: table full, dropping packet 的几种思路
- nf_conntrack: table full, dropping packet解决方法
- nf_conntrack: table full, dropping packet问题的解决思路