那么,为什么会出现 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=.sysctl -w net.ipv4.netfilter.ip_conntrack_max=.在 /etc/sysctl 中加入: 复制代码代码如下:net.ipv4.netfilter.ip_conntrack_max = .net.ipv4.netfilter.ip_conntrack_max = .使其生效: 复制代码代码如下:sysctl -p.sysctl -pCentOS 6 /RHEL 6 下的解决方法: 1.运行 复制代码代码如下:sysctl -w net.nf_conntrack_max=.sysctl -w net.nf_conntrack_max=.在 /etc/sysctl 中加入: 复制代码代码如下:net.nf_conntrack_max = .net.nf_conntrack_max = .使其生效: 复制代码代码如下: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 i中 hashsize=conntrack_max/8=ramsize(in bytes)/=ramsize(in MegaBytes)*8. 所以位pc,M内存可以存*^2//=*8=(连接池list) 但是正确的算法是: hashsize=conntrack_max/8=ramsize(in bytes)//(x/) x表示使用的指针类型是(位还是的) —————————- 读取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= vi /etc/sysctl.conf net.ipv4.netfilter.ip_conntrack_max = (根据自己的物理内存算出来的) net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = ########################################## ————————– conntrack使用的内存计算 size_of_mem_used_by_conntrack (in bytes) = CONNTRACK_MAX * sizeof(struct ip_conntrack) + HASHSIZE * sizeof(struct list_head) 其中sizeof(struct ip_conntrack)大概在-字节之间. sizeof(struct list_head) = 2 * size_of_a_pointer(i中为4字节) 一个例子m内存,使用m来用于conntrack则 **/(+8)(使用它是保守计算) =~ (此为conntrack:hashszie为1:1,为sizeof(ip_conntrack),8为sizeof(list_head). 由于hash最好设为2的乘方的数,所以为(2^). ——————— 附相关设置及命令: ip_conntrack timeout 原值秒(5天) 可改为小时,echo “″ > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established ip_conntrack buffer使用情况 grep conn /proc/slabinfo 例ip_conntrack 1 : tunables 8 : slabdata 相关修改: echo “ ″ > /proc/sys/net/ipv4/ip_local_port_range echo “ 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 “″ > /proc/sys/net/ipv4/netfilter/ip_conntrack_max echo “1″ > /proc/sys/net/ipv4/ip_forward echo “″ >/proc/sys/kernel/shmall echo “″ >/proc/sys/kernel/shmmax echo “″ > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established echo “″ > /proc/sys/net/ipv4/neigh/default/gc_thresh1 echo “″ > /proc/sys/net/ipv4/neigh/default/gc_thresh2 echo “″ > /proc/sys/net/ipv4/neigh/default/gc_thresh3 echo “″ > /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: table full, dropping packet 的解决方法,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
Hyper-V装CentOS需要的Linux Integration Components的步骤分享 步骤如下:首先需要kernel-devel和gcc我的是位的CentOS,还需要adjtimexRPM确保时间准确性因为没网,安装就得从光盘安装。要将yum的repo设置为光盘于是#cd/et
centos 系统下安装配置FastDFS步骤分享 centos系统下安装配置FastDFS步骤:1:安装libevent(libevent-2.0.-stable)##卸载系统自带libeventrpm-qa|greplibeventrpm-elibevent*##为Trackerd和Storaged节点节点安装libeventcd/home/
Linux VPS CentOS 安装FreeNX桌面环境步骤 作为LinuxVPS使用用户,老左开始就不提倡使用桌面环境或者使用面板,即便我在之前也写过几篇关于Kloxo面板的文章。个人建议作为VPS新手或者纯属娱乐