Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1026989
  • 博文数量: 361
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 1759
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-22 23:18
个人简介

学海无涯 个人blog lnmps.com 新站

文章分类

全部博文(361)

文章存档

2017年(1)

2015年(2)

2014年(55)

2013年(303)

分类: LINUX

2014-01-17 17:06:04

系统报:
Apr 17 16:37:26 www kernel: printk: 135 messages suppressed.
Apr 17 16:37:26 www kernel: ip_conntrack: table full, dropping packet.
Apr 17 16:37:26 www kernel: ip_conntrack: table full, dropping packet.
Apr 17 16:37:33 www kernel: printk: 139 messages suppressed.
Apr 17 16:37:33 www kernel: ip_conntrack: table full, dropping packet.
Apr 17 16:37:37 www kernel: printk: 60 messages suppressed.
Apr 17 16:37:37 www kernel: ip_conntrack: table full, dropping packet.
Apr 17 16:37:52 www kernel: printk: 19 messages suppressed.
Apr 17 16:37:52 www kernel: ip_conntrack: table full, dropping packet.

有丢包现象

[root@www ~]# wc -l /proc/net/ip_conntrack
68463 /proc/net/ip_conntrack

[root@www ~]# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_max
65536

读取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 180 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
echo 262144 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 120   > /proc/sys/net/ipv4/neigh/default/gc_stale_time
echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
echo 8192 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

或vi /etc/sysctl.conf

net.ipv4.ip_conntrack_max = 655360
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180

再sysctl -p

相关参数说明:


ARP 支持一个 sysctl 接口,可以用以配置全局参数或逐个网络接口地进行配制。 该 sysctl 可以通过 /proc/sys/net/ipv4/neigh/*/* 文件或者使用 (2) 接口来访问。系统中每个接口都在 /proc/sys/net/ipv4/neigh/. 中有自己的目录。`default'目录中的设置用于所有新建的设备。 sysctl 相关的时间是以秒为单位,除非特别声明过. anycast_delay 对 IPv6 相邻请求信息的回复的最大延迟时间; 目前还不支持 anycast。缺省值为1秒。 app_solicit 这是在使用多路广播探测(multicast probe)前, 经过网络连接送到用户间隙ARP端口监控程序的探测(probe) 最大数目(见 mcast_solicit )。 缺省值为0。 base_reachable_time 一旦发现相邻记录,至少在一段介于 base_reachable_time/2和3*base_reachable_time/2 之间的随机时间内,该记录是有效的。如果收到上层协议的肯定反馈, 那么记录的有效期将延长。 缺省值是30秒。 delay_first_probe_time 发现某个相邻层记录无效(stale)后,发出第一个探测要等待的时间。 缺省值是5秒。 gc_interval 收集相邻层记录的无用记录的垃圾收集程序的运行周期,缺省为30秒。 gc_stale_time 决定检查一次相邻层记录的有效性的周期。 当相邻层记录失效时,将在给它发送数据前,再解析一次。 缺省值是60秒。 gc_thresh1 存在于ARP高速缓存中的最少层数,如果少于这个数, 垃圾收集器将不会运行。缺省值是128。 gc_thresh2 保存在 ARP 高速缓存中的最多的记录软限制。 垃圾收集器在开始收集前,允许记录数超过这个数字 5 秒。 缺省值是 512。 gc_thresh3 保存在 ARP 高速缓存中的最多记录的硬限制, 一旦高速缓存中的数目高于此, 垃圾收集器将马上运行。缺省值是1024。 locktime ARP 记录保存在高速缓存内的最短时间(jiffy数), 以防止存在多个可能的映射(potential mapping)时, ARP 高速缓存系统的颠簸 (经常是由于网络的错误配置而引起)。 缺省值是 1 秒。 mcast_solicit 在把记录标记为不可抵达的之前, 用多路广播/广播(multicast/broadcast)方式解析地址的最大次数。 缺省值是3。 proxy_delay 当接收到有一个请求已知的代理 ARP 地址的 ARP 请求时, 在回应前可以延迟的 jiffy(时间单位,见BUG)数目。 这样,以防止网络风暴。缺省值是0.8秒。 proxy_qlen 能放入代理 ARP 地址队列(proxy-ARP addresses)的数据包最大数目。缺省值是64。 retrans_time 重发一个请求前的等待 jiffy(时间单位,见BUG)的数目。缺省值是1秒。 ucast_solicit 询问ARP端口监控程序前,试图发送单探测(unicast probe)的次数。 (见 app_solicit). 缺省值是3秒。 unres_qlen 每个没有被其它网络层解析的地址,在队列中可存放包的最大数目。缺省值是3.
阅读(968) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~