http://blog.sina.com.cn/s/blog_541a3cf10101b3bj.html
昨天上线cache后,防火墙高峰报道2W5有些不对劲,检查系统日志发现
Sep
Sep
Sep
Sep
之前用ab测试10W请求每次200测试就出现过apr_socket_recv: Connection timed out(110)终止
没在意,所以就PASS了;不料留下了隐患。
那么先参考http://blog.johntechinfo.com/technology/275这篇文章来优化下测试环境:
解决办法如其所述,对ip_conntrack的两个参数进行设置即可:
net.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
但是http://blog.yorkgu.me/2012/02/09/kernel-nf_conntrack-table-full-dropping-packet/这位仁兄文中说在centos上,需要这样设置
net.ipv4.netfilter.ip_conntrack_max =655350
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established= 1200
#默认超时时间为5天,作为一个主要提供HTTP服务的服务器来讲,完全可以设置得比较短
sysctl -p /etc/sysctl.conf
那么我们再试下10W请求每次2000来测试下是否有效:(用的是第一种net.nf_conntrack_max)
ip_conntrack就是linuxNAT的一个跟踪连接条目的模块,ip_conntrack模块会使用一个哈希表记录
关于如何优化conntrack模块,有一篇文章对此进行了解释,http://wiki.khnet.info/index.php/Conntrack_tuning,或http://blog.yorkgu.me/wp-content/uploads/2012/02/netfilter_conntrack_perf-0.8.txt
cat /proc/slabinfo |grep conntrack
nf_conntrack_expect
nf_conntrack
55606 the number of currently active objects
73836 the total number of availableobjects
288 the size of each object inbytes
28 the number of pages with at least one active object
查出目前 ip_conntrack 记录最多的前十名 IP
cat /proc/net/ip_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2| sort | uniq -c | sort -nr | head -n 10