zoukankan      html  css  js  c++  java
  • nf_conntrack满之解决方法nginx报502错误

    问题:
    没有占用多少流量,但是网络连接很慢,ping超时。已发现被大量不同的机器访问导致tcp连接数非常高,nf_conntrack满了

    vim /var/log/message报错

    nf_conntrack: table full, dropping packet

    先关掉iptables

    /etc/init.d/iptables stop

    查看当前的连接数:

    # grep nf_conntrack /proc/slabinfo

    查出目前 nf_conntrack 的排名:

    $ cat /proc/net/nf_conntrack | cut -d ' ' -f 10 | cut -d '=' -f 2 | sort | uniq -c | sort -nr | head -n 10

    优化参数

    状态跟踪表的最大行数的设定,理论最大值 CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (ARCH / 32) 

    以64G的64位操作系统为例,CONNTRACK_MAX = 64*1024*1024*1024/16384/2 = 2097152 

    即时生效请执行: 

    sysctl –w net.netfilter.nf_conntrack_max = 524288  (16G)

    其哈希表大小通常为总表的1/8,最大为1/2。CONNTRACK_BUCKETS = CONNTRACK_MAX / 8 

    同样64G的64位操作系统,哈希最佳范围是 262144 ~ 1048576 。 

    运行状态中通过 sysctl net.netfilter.nf_conntrack_buckets 进行查看,通过文件 /sys/module/nf_conntrack/parameters/hashsize 进行设置 

    或者新建 /etc/modprobe.d/iptables.conf ,重新加载模块才生效: 

    options nf_conntrack hashsize = 262144

    还有些相关的系统参数`sysctl -a | grep nf_conntrack`可以调优(/etc/sysctl.conf ): 

    net.netfilter.nf_conntrack_max  =  1048576   

    net.netfilter.ip_conntrack_tcp_timeout_established  =  3600   

    net.netfilter.nf_conntrack_tcp_timeout_close_wait  =  60   

    net.netfilter.nf_conntrack_tcp_timeout_fin_wait  =  120   

    net.netfilter.nf_conntrack_tcp_timeout_time_wait  =  120

  • 相关阅读:
    错误:The columns and the margins do not fit the page width.
    jasperreport使用动态jason数据源
    DynamicReport使用XML数据源+ireport的.jxml文件作为模板
    Report bands中文版
    iReport 使用json 数据源
    bat设置java环境变量
    解决DynamicReports中含有中文pdf版本不显示
    vba实现excel二级联动多选功能
    打字游戏 C语言
    fpga 任意分频 奇偶数 分频
  • 原文地址:https://www.cnblogs.com/itfat/p/13073519.html
Copyright © 2011-2022 走看看