DinoStray
V2EX  ›  问与答

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

  •  
  •   DinoStray · 2020년 1월 7일 · 3276 조회수
    2379일 지난 토픽입니다. 언급된 정보가 변경되었을 수 있습니다.

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

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

    ping www.baidu.com

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

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

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

    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   ·   5810 온라인   최고 기록 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 02:05 · PVG 10:05 · LAX 19:05 · JFK 22:05
    ♥ Do have faith in what you're doing.