我的服务器上的conntrack表有超过120万个连接,我不断提高限制,但表只是继续增长(但不是单调的 – 它有时会下降).
$cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count 1278865
尽管netstat非常合理,但这是真的:
$netstat -ant | wc -l 908
我正在使用内核2.6.32-5-amd64运行Debian.我知道conntrack表保存了最近的连接信息,所以预计它会比netstat大,但这种行为似乎仍然相当极端!该框主要用作Web服务器,Apache中的mod_python用于处理连接.这些之外应该没有任何联系.没有多余的mod_python线程在运行(ps -ef看起来正常,顶部看起来正常),而Apache和mod_python的错误日志看起来很正常. (出于隐私原因,我无法发布详细的错误日志信息).
在ip_conntrack中,IP地址似乎是公平分布的并且在端口443上(正如人们所期望的那样,Web服务器专门通过HTTPS服务).我不确定是什么原因导致IP连接失控,我无法在互联网上找到信息,这表明这是一个已知问题.是否有Apache配置或任何可能是罪魁祸首的东西?其他想法?非常感谢.
解决方法
要回答您的问题,您可以在sysctl.conf中设置net.netfilter.nf_conntrack_tcp_timeout_established默认值为5天,可以大大降低,但不会影响任何可能的443流量. net.ipv4.netfilter.ip_conntrack_max也可以被提升.