DinoStray
V2EX  ›  问与答

Linux 服务器, 压测, tcp 长连接 并发到 26 万, 网卡就像挂掉了, 大家帮忙给点思路

  •  
  •   DinoStray · Jan 7, 2020 · 3197 views
    This topic created in 2340 days ago, the information mentioned may be changed or developed.

    linux 服务器, 压测, tcp 长连接 并发到 26 万.
    内存 CPU 都正常
    已经建好的 tcp 连接都正常
    就是无法新建 tcp 连接了

    现象包括连 百度 都无法 ping 了

    ping www.baidu.com

    ping: www.baidu.com: Temporary failure in name resolution

    新启动一个服务, 数据也无法发送了
    基本等同完全无法访问网络了, apt update 之类的命令也全部报错失效

    7 replies    2020-03-08 21:35:41 +08:00
    DinoStray
        1
    DinoStray  
    OP
       Jan 7, 2020
    把压测的模拟器都关掉, 一切恢复正常
    codehz
        3
    codehz  
       Jan 7, 2020
    (听起来是因为文件句柄用光了
    julyclyde
        4
    julyclyde  
       Jan 9, 2020
    你们的客户有 26 万吗
    maxbon
        5
    maxbon  
       Jan 11, 2020
    内核调一调,/etc/sysctl.conf
    DinoStray
        6
    DinoStray  
    OP
       Mar 8, 2020
    @julyclyde 7*24 百万以上并发 tcp
    DinoStray
        7
    DinoStray  
    OP
       Mar 8, 2020
    问题已经解决了, 把笔记在这里贴一下吧:

    conntrack 限制

    所有在内核中由 Netfilter 的特定框架做的连接跟踪称作 conntrack ( connection tracking )

    达到最大限制后, 会报错
    nf_conntrack: table full, dropping packet

    查看当前系统设置最大连接数
    cat /proc/sys/net/netfilter/nf_conntrack_max

    查看连接跟踪有多少条目
    cat /proc/sys/net/netfilter/nf_conntrack_count

    vim /etc/sysctl.conf
    net.nf_conntrack_max = 2000000

    临时生效
    sysctl -p

    永久生效, 还需额外操作
    http://xy.am/2015/04/26/nf-conntrack/
    你只需要把 nf_conntrack 加到系统开机模块,就可以用 /etc/sysctl.conf 开机设置它了
    echo "nf_conntrack" >> /etc/modules
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5826 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 02:51 · PVG 10:51 · LAX 19:51 · JFK 22:51
    ♥ Do have faith in what you're doing.