• nf_conntrack: table full, dropping packet 解决


    系统连接数高的时候,机子出现掉包,查看日志发现报错,nf_conntrack: table full, dropping packet,解决办法就是调整参数。

    有的人建议关闭防火墙,但是对于linux来说,iptables就是一个命令好像没有关闭开启之说。

    这里采取调整参数的方式进行调优。

    查看相关参数

    1 sysctl net.netfilter.nf_conntrack_max 可以查看当前值
    2 
    3 sysctl net.netfilter.nf_conntrack_count 可以查看tracking table数

    提高 net.netfilter.nf_conntrack_max

     1 默认的net.netfilter.nf_conntrack_max 是 65536
     2 
     3 这里我们首先提高 net.netfilter.nf_conntrack_max , 当然,肯定不是越高越好,如果你的机器是一个64GB 64bit的系统,那么最合适的值是
     4 
     5  CONNTRACK_MAX = 64*1024*1024*1024/16384/2 = 2097152
     6 即时生效使用
     7 
     8 /sbin/sysctl -w net.netfilter.nf_conntrack_max = 2097152
     9 确保重启后也生效使用
    10 
    11 echo net.ipv4.netfilter.ip_conntrack_max = 2097152 >> /etc/sysctl.conf

    提升hash-table的数量

    1 哈希表一般是net.netfilter.nf_conntrack_max的1/8
    2 
    3 hashsize = nf_conntrack_max / 8
    4 更改哈希表的值
    5 
    6 echo 262144 > /sys/module/nf_conntrack/parameters/hashsize
    7 并且添加到模块/etc/modprobe.conf
    8 
    9 options ip_conntrack hashsize=262144

    调整优化系统参数

     1 /etc/sysctl.conf配置调整
     2 
     3 net.netfilter.nf_conntrack_max  =   2097152  
     4 
     5 net.netfilter.ip_conntrack_tcp_timeout_established  =   3600  
     6 
     7 net.netfilter.nf_conntrack_tcp_timeout_close_wait  =   60  
     8 
     9 net.netfilter.nf_conntrack_tcp_timeout_fin_wait  =   120
    10   
    11 net.netfilter.nf_conntrack_tcp_timeout_time_wait  =   120 
  • 相关阅读:
    JVM运行参数优化详细教程
    idea 代码热启动配置方法
    Spring MVC拦截器完整代码示例
    Spring MVC异常处理代码完整实例
    Python3基础语法(20190617)
    Java代码生成器Easy Code
    Mybatis @Many注解一对多关联映射
    Mybatis @One注解使用
    Mybatis @ResultMap复用@Result
    Mybatis @Result注解的使用案例
  • 原文地址:https://www.cnblogs.com/sshcy/p/10690829.html
Copyright © 2020-2023  润新知