服务器出现 server kernel: ip_conntrack: table full, dropping packet. 问题
2011-11-25 12:16
615 查看
昨天上午挂在 VPSee 桌子旁边墙壁上的老古董 IBM TP600E 终于发挥作用,连续报警,监视显示某台服务器丢包非常严重,甚至大多时候不能访问,终端登录系统后检查日志发现 ip_conntrack: table full, dropping packet.
错误:
查看当前 ip_conntrack 记录,已经有 36271,超过了系统设置的 16640 (ip_conntrack_max 默认设置为系统内存(MB 为单位)的 16倍):
kernel 用 ip_conntrack 模块来记录 iptables 网络包的状态,并保存到 table 里(这个 table 在内存里),如果网络状况繁忙,比如高连接,高并发连接等会导致逐步占用这个 table 可用空间,一般这个 table 很大不容易占满并且可以自己清理,table 的记录会一直呆在 table 里占用空间直到源 IP 发一个 RST 包,但是如果出现被攻击、错误的网络配置、有问题的路由/路由器、有问题的网卡等情况的时候,就会导致源 IP 发的这个 RST 包收不到,这样就积累在 table
里,越积累越多直到占满,满了以后 iptables 就会丢包,出现外部无法连接服务器的情况。
知道问题就好办了,要么增加 table 容量以便能记录更多的连接信息(会消耗一点内存),要么就卸载 ip_conntrack 模块。
查看当前 ip_conntrack_max 设置,然后增加两倍到 131072:
还有一个参数 ip_conntrack_tcp_timeout_established 需要注意,默认情况下 timeout 是5天(432000秒),需要的话可以减半:
综合一下,最好把这些内核参数加到 sysctl.conf 文件以便系统启动后自动读取中:
还有一种办法就是直接卸载 ip_conntrack 模块,这个办法最简单,到在 /etc/sysconfig/iptables-config 文件里删除或者注释掉 ip_conntrack_netbios_ns 后重启系统:
错误:
# vi /var/log/messages ... Nov 8 08:54:58 server kernel: ip_conntrack: table full, dropping packet. Nov 8 08:55:03 server kernel: printk: 49 messages suppressed. Nov 8 08:55:03 server kernel: ip_conntrack: table full, dropping packet. Nov 8 08:55:08 server kernel: printk: 49 messages suppressed. ...
查看当前 ip_conntrack 记录,已经有 36271,超过了系统设置的 16640 (ip_conntrack_max 默认设置为系统内存(MB 为单位)的 16倍):
$ head /proc/slabinfo slabinfo - version: 2.1 # name : tunables : slabdata ip_conntrack_expect 0 0 192 20 1 : tunables 120 60 8 : slabdata 0 0 0 ip_conntrack 36271 36216 384 10 1 : tunables 54 27 8 : slabdata 1612 1612 108 # cat /proc/sys/net/ipv4/ip_conntrack_max 16640
kernel 用 ip_conntrack 模块来记录 iptables 网络包的状态,并保存到 table 里(这个 table 在内存里),如果网络状况繁忙,比如高连接,高并发连接等会导致逐步占用这个 table 可用空间,一般这个 table 很大不容易占满并且可以自己清理,table 的记录会一直呆在 table 里占用空间直到源 IP 发一个 RST 包,但是如果出现被攻击、错误的网络配置、有问题的路由/路由器、有问题的网卡等情况的时候,就会导致源 IP 发的这个 RST 包收不到,这样就积累在 table
里,越积累越多直到占满,满了以后 iptables 就会丢包,出现外部无法连接服务器的情况。
知道问题就好办了,要么增加 table 容量以便能记录更多的连接信息(会消耗一点内存),要么就卸载 ip_conntrack 模块。
查看当前 ip_conntrack_max 设置,然后增加两倍到 131072:
# cat /proc/sys/net/ipv4/ip_conntrack_max 16640 # echo 131072 > /proc/sys/net/ipv4/ip_conntrack_max 或者 # sysctl -w net.ipv4.netfilter.ip_conntrack_max=131072
还有一个参数 ip_conntrack_tcp_timeout_established 需要注意,默认情况下 timeout 是5天(432000秒),需要的话可以减半:
# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established 432000 # sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=216000 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 216000
综合一下,最好把这些内核参数加到 sysctl.conf 文件以便系统启动后自动读取中:
# vi /etc/sysctl.conf ... net.ipv4.netfilter.ip_conntrack_max = 131072 net.nf_conntrack_max = 131072 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 216000
还有一种办法就是直接卸载 ip_conntrack 模块,这个办法最简单,到在 /etc/sysconfig/iptables-config 文件里删除或者注释掉 ip_conntrack_netbios_ns 后重启系统:
# vi /etc/sysconfig/iptables-config #IPTABLES_MODULES="ip_conntrack_netbios_ns" # shutdown -r now
http://www.vpsee.com/2011/11/how-to-solve-ip_conntrack-table-full-dropping-packet-problem/
相关文章推荐
- 服务器出现 server kernel: ip_conntrack: table full, dropping packet. 问题
- 服务器出现 server kernel: ip_conntrack: table full, dropping packet. 问题
- 服务器出现 server kernel: ip_conntrack: table full, dropping packet. 问题
- kernel: ip_conntrack: table full, dropping packet.
- 老男孩教育每日一题-2017-04-19出现 kernel: nf_conntrack: table full, dropping packet.如何解决
- 关于ip_conntrack: table full, dropping packet的问题
- 关于ip_conntrack: table full, dropping packet的问题
- kernel: ip_conntrack: table full, dropping packet
- 用iptables的raw表解决ip_conntrack: table full, dropping packet的问题
- kernel: ip_conntrack: table full, dropping packet.
- kernel:ip_conntrack:table full,dropping packet导致丢包
- 解决(kernel: ip_conntrack: table full, dropping packet)的方法
- 用iptables的raw表解决ip_conntrack: table full, dropping packet的问题
- 用iptables的raw表解决ip_conntrack: table full, dropping packet的问题
- ip_conntrack: table full, dropping packet的问题
- 解决(kernel: ip_conntrack: table full, dropping packet)的方法
- 用iptables的raw表解决ip_conntrack: table full, dropping packet的问题
- ip_conntrack: table full, dropping packet.
- ip_conntrack: table full, dropping packet
- ip_conntrack: table full, dropping packet.的解决(from idcnews)