理解Linux内核内存(2)

make –C /lib/modules/2.6.18-92.e15/build SUBDIRS=`pwd` modules  

如此一来加载ip_conntrack.ko之后,内核日志将打印出:
ip_conntrack version 2.4 (8192 buckets, 65536 max) - 102628 bytes per conntrack
由此看出ip_conntrack结构体已经增大了,这样撑满整个可用内存所需的网络连接压力就大大减小了,也就不用什么loadrunner之类的东西了。为了尽快撑满可以使用的内存,还要将关于ip_conntrack的所有timeout设置的比较长,相当长:

sysctl -w net.ipv4.netfilter.ip_conntrack_generic_timeout=600000   sysctl -w net.ipv4.netfilter.ip_conntrack_icmp_timeout=300000   sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_close=1000000   sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120000   sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack=300000   sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60000   sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120000   sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=432000   sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv=600000   sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent=120000  

这样既有的一个流就会“永久保持”了,一直占着ip_conntrack结构体不放,直到可用的内存溢出。
在加载了ip_conntrack模块之后,所有过往的数据包就会自动被追踪,下面编写以下脚本:

for (( i=1; i<255; i++));   do       for (( j=1; j<255; j++));       do           ping 192.168.$i.$j -c 1 -W 1           curl --connect-timeout 1 http://138.$i.$j.80/            curl --connect-timeout 1 http://38.$i.$j.80/            curl --connect-timeout 1 http://$i.1.$j.80/            curl --connect-timeout 1 http://$j.$i.9.8/        done   done  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/22943.html