千家信息网

CentOS ip_conntrack中表满和丢包的解决方法是怎样的

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关CentOS ip_conntrack中表满和丢包的解决方法是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看
千家信息网最后更新 2026年11月01日CentOS ip_conntrack中表满和丢包的解决方法是怎样的

本篇文章给大家分享的是有关CentOS ip_conntrack中表满和丢包的解决方法是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

那么,为什么会出现 ip_conntrack: table full, dropping packet 呢?iptables 使用一张连接跟踪表,来描述连接状态,当这张表满了,就会在日志里面写入该信息。这可能有点难以理解,那么到底在什么情况下,我们需要在日志里面查找这条记录呢?

当你发现,PING 服务器的结果,出现丢包,或者出现延迟不稳定,忽高忽低,在排除线路因素之后,就应当考虑 ip_conntrack: table full, dropping packet 。

下面介绍 ip_conntrack: table full, dropping packet 的解决方法:

CentOS 6 /RHEL 5 下的解决方法:

1.运行


代码如下:

sysctl -w net.ipv4.netfilter.ip_conntrack_max=100000.sysctl -w net.ipv4.netfilter.ip_conntrack_max=100000



2.在 /etc/sysctl 中加入:


代码如下:

net.ipv4.netfilter.ip_conntrack_max = 100000.net.ipv4.netfilter.ip_conntrack_max = 100000



3.使其生效:


代码如下:

sysctl -p.sysctl -p



CentOS 6 /RHEL 6 下的解决方法:

1.运行


代码如下:

sysctl -w net.nf_conntrack_max=100000.sysctl -w net.nf_conntrack_max=100000



2.在 /etc/sysctl 中加入:


代码如下:

net.nf_conntrack_max = 100000.net.nf_conntrack_max = 100000



3.使其生效:


代码如下:

sysctl -p.sysctl -p



*** 如果 Xen DomU 出现零星丢包或者 PING 忽高忽低,同时关闭 iptables 后 ping 正常,则多半是这个问题。

或参考下面的方法试试

一。服务器出现了大量的丢包现象,通过查看message出现了下面的错误:
kernel:ip_conntrack:table full,dropping packet

解决的方法:

代码如下:


显示当前的会话数:
cat /proc/net/ip_conntrack | wc -l
显示系统目前配置的最大 conntrack 数:
cat /proc/sys/net/ipv4/ip_conntrack_max
# 一旦前者的数字大于后者时,系统就报错,解决办法:
echo "" > /proc/sys/net/ipv4/ip_conntrack_max
# 然后写入
/etc/sysctl.conf
net.ipv4.ip_conntrack_max =


二
有两点我们要注意.

-conntrack最大数量.叫做conntrack_max
-存储这些conntrack的hash表的大小,叫做hashsize
当conntrack入口数大于conntrack_max时,在hash表中每一个conntrack list中的存储的入口将不可控.(conntrack_mark/hashsize 为每个list所能存储的入口的数量)
hash表存在于固定的的不可swap的内存中. conntrack_mark决定占用多少这些不可swap的内存.
缺省的hashsize
——————————–
conntrack_max=hashsize*8
i386中 hashsize=conntrack_max/8=ramsize(in bytes)/131072=ramsize(in MegaBytes)*8.
所以32位pc,512M内存可以存512*1024^2/128/1024=512*8=4096(连接池list)
但是正确的算法是:
hashsize=conntrack_max/8=ramsize(in bytes)/131072/(x/32)
x表示使用的指针类型是(32位还是64的)
—————————-\
读取conntrack_max值
2.4内核
cat /proc/sys/net/ipv4/ip_conntrack_max
2.6内核
cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max

读取hashsize值
cat /proc/sys/net/ipv4/netfilter/ip_conntrack_buckets
——————————
你可修改这两个值以适应高负载的netfilter的应用
系统默认为conntrack_max:hashsize是8:1,你可以设成1:1以提高性能.
————————-
设置conntrack_max
echo $CONNTRACK_MAX > /proc/sys/net/ipv4/ip_conntrack_max
设置hashsize
如果(netfilter conntrack静态编译在内核中),2.4中可以在编译时设置,2.6可以在启动中(boot时)加入ip_conntrack.hashsize=$hashsize
如果为modules,则可以使用 modprobe ip_conntrack hashsize=$hashsize
#####################################
实践过方法:
Vi /etc/modprobe.conf
添加:
options ip_conntrack hashsize=524288

vi /etc/sysctl.conf
net.ipv4.netfilter.ip_conntrack_max = 524288 (根据自己的物理内存算出来的)
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
##########################################
————————–
conntrack使用的内存计算
size_of_mem_used_by_conntrack (in bytes) =
CONNTRACK_MAX * sizeof(struct ip_conntrack) +
HASHSIZE * sizeof(struct list_head)
其中sizeof(struct ip_conntrack)大概在192-352字节之间.
sizeof(struct list_head) = 2 * size_of_a_pointer(i386中为4字节)
一个例子512m内存,使用384m来用于conntrack则
384*1024*1024/(352+8)(使用它是保守计算) =~1143901 (此为conntrack:hashszie为1:1,352为sizeof(ip_conntrack),8为sizeof(list_head).
由于hash最好设为2的乘方的数,所以为1048576(2^20).
———————
附相关设置及命令:
ip_conntrack timeout 原值432000秒(5天)
可改为10小时,echo "600″ > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
ip_conntrack buffer使用情况
grep conn /proc/slabinfo
例ip_conntrack 188069 229570 336 11 1 : tunables 54 27 8 : slabdata 20870

相关修改:
echo "1024 65000″ > /proc/sys/net/ipv4/ip_local_port_range
echo "100 1200 128 512 15 5000 500 1884 2″>/proc/sys/vm/bdflush
echo "1″ > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1″ > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo "1048576″ > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo "1″ > /proc/sys/net/ipv4/ip_forward
echo "268435456″ >/proc/sys/kernel/shmall
echo "536870912″ >/proc/sys/kernel/shmmax
echo "600″ > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
echo "1024″ > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo "2048″ > /proc/sys/net/ipv4/neigh/default/gc_thresh3
echo "4096″ > /proc/sys/net/ipv4/neigh/default/gc_thresh4
echo "52428800″ > /proc/sys/net/ipv4/route/max_size
echo "1″ > /proc/sys/net/ipv4/conf/all/proxy_arp
echo "1″ > /proc/sys/net/ipv4/tcp_window_scaling

以上就是CentOS ip_conntrack中表满和丢包的解决方法是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

方法 代码 内存 入口 内核 系统 存储 中表 最大 字节 情况 数量 日志 更多 服务器 知识 篇文章 面的 中加 服务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技与互联网 鸠鸠互联网科技 互联网科技有限公司图片 科技信息互联网 与互联网科技公司 互联网科技股票 奇酷互联网络科技公司 富国互联网科技创新基金 中国科技互联网公司收入 剑昆互联网络科技有限公司临桂 厦门比较好的科技互联网公司 南平创想时代互联网科技有限公司 世界互联网领先科技成果获奖 互联网第三次科技革命特征 新氧科技和美国互联网有关系吗 普陀区互联网教育科技管理办法 互联网公司属于科技吗 互联网科技对化妆品行业 互联网对科技影响 互联网 科技节活动 微视频大赛 南京欣网互联网络科技有限公司 科技平台互联网 麻工互联网科技 狮子座互联网科技 杭州互联网科技公司 华中科技有哪些互联网大佬 中国科技创新与世界互联网大会 富国互联网金融科技混合基金 艺电能源互联网科技有限公司招聘 众联互联网络科技
0