zoukankan      html  css  js  c++  java
  • iptables导致数据包过多时连接失败

      前几天做服务器压力测试,本地10个线程不停的去向服务器建立连接,然后请求数据,然后连接再关闭,程序每运行几万次之后就会发现客户端程序没办法connect服务器,connect超时。

      一开始怀疑是自己服务器的处理有问题,导致socket数过多没办法创建新的连接,现将系统中用户可以打开的最大文件数调成10w,继续进行压力测试,发现问题依然存在。

      经过一些时间的检查之后,确定应该不是自己服务本身的问题,这时候想将iptables关闭试试,iptables里面是没有配置连接数限制的。

      在关闭iptables时之后,发现问题确实没有了,不过还是不知道是什么原因导致的。不过已经可以确定是和iptables相关的了。

      这时候看来一下iptables的日志(/var/log/message)中有很多:

      Sep 3 14:34:07 xxx kernel: nf_conntrack: table full, dropping packet.
      Sep 3 14:34:08 xxx kernel: nf_conntrack: table full, dropping packet.
      Sep 3 14:34:15 xxx kernel: nf_conntrack: table full, dropping packet.
      这种类似的日志,网上搜索到的解释是内核处理的连接数达到上限

      [root@dns1 /]# echo 65535000 > /proc/sys/net/netfilter/nf_conntrack_max 
      [root@dns1 /]# echo 10800 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
     
      修改上限之后,重启iptables,然后再次压力测试,发现可以正常工作了
      有资深的运维人士认为这种方法存在缺陷,会导致系统消耗增加,治标不治本,建议直接关掉iptables,链接:http://jaseywang.me/2012/08/16/%E8%A7%A3%E5%86%B3-nf_conntrack-table-full-dropping-packet-%E7%9A%84%E5%87%A0%E7%A7%8D%E6%80%9D%E8%B7%AF/
  • 相关阅读:
    rqnoj71 拔河比赛
    NOI2002 洛谷 P1196 银河英雄传说
    sdibt 1244 烦人的幻灯片
    POJ 1273 Drainage Ditches -dinic
    NOIP2005提高组 过河
    OpenJudge 7627 鸡蛋的硬度
    Openjudge 8782 乘积最大
    OpenJudge 7624 山区建小学
    UVa 1328 Period
    UVa 11384 Help is needed for Dexter
  • 原文地址:https://www.cnblogs.com/chobits/p/3953719.html
Copyright © 2011-2022 走看看