查看/var/log/message中,可以查看到许多系统丢包现象
nf_conntrack: table full, dropping packet
本人使用的是CENTOS6.5系统(64GB内存)
查看当前值nf_conntrack_max
使用 /sbin/sysctl net.netfilter.nf_conntrack_max
65536
查看tracking table数(系统记录追踪数目)
使用 /sbin/sysctl net.netfilter.nf_conntrack_count
提高 net.netfilter.nf_conntrack_max
默认的net.netfilter.nf_conntrack_max
是 65536
这里首先提高 net.netfilter.nf_conntrack_max
, 当然不是越高越好,如果机器是一个64GB 64bit的系统,那么最合适的值是
CONNTRACK_MAX = 64*1024*1024*1024/16384/2 = 2097152
即时生效使用
/sbin/sysctl -w net.netfilter.nf_conntrack_max=2097152
其哈希表大小通常为总表的1/8,最大为1/2。CONNTRACK_BUCKETS = CONNTRACK_MAX / 8
运行状态中通过 sysctl net.netfilter.nf_conntrack_buckets 进行查看,通过文件 /sys/module/nf_conntrack/parameters/hashsize 进行设置
相关的系统参数`sysctl -a | grep nf_conntrack`可以调优(/etc/sysctl.conf ):
net.netfilter.conntrack_buckets=524288(一般为8Gb内存默认值的整数倍,默认65536)
net.netfilter.nf_conntrack_max = 2097152
net.netfilter.ip_conntrack_tcp_timeout_established = 3600 (1小时足矣)
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
修改后稳定性测试图对比如下: