已解决!
创作者:吴仔汕
查看服务器日志#tailf /var/log/message
的时候,发现出现很多这种报错:
kernel: nf_conntrack: table full, dropping packet
导致服务的连接异常,client端与server端无法建立连接
丢包原因:服务器访问量过大,内核iptables的跟踪表 nf_conntrack 相关参数配置不合理,导致 IP 包被丢掉,tcp连接无法建立
解决方法:
①丢包现象首先考虑防火墙问题,查看防火墙是关闭状态;
②再考虑iptables跟踪表中netfilter模块的 当前跟踪连接数 与最大跟踪连接数 这两个参数 (丢包现象大都与跟踪连接数有关),看是否超限了:
使用命令查看:sysctl -a | grep conntrack
对比
net.netfilter.nf_conntrack_count 和 net.netfilter.nf_conntrack_max
net.netfilter.nf_conntrack_max 最大跟踪连接数 默认为65536
发现我的133那台机器的连接数达到了26万,而最大连接数才设置到8万
其哈希最佳范围是 262144 ~ 1048576