You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何维持10k活跃WebSocket连接并防止断开?(分布式测试场景)

WebSocket高活跃连接维持优化方案

针对你维持10k活跃WebSocket连接时出现断开的问题,结合现有测试结构,可从以下方向优化:

  • 排查VM资源瓶颈
    检查3台VM的CPU、内存使用率,以及系统文件句柄限制:

    • Linux系统默认文件句柄上限(ulimit -n)通常较低,需调至至少65535——每个WebSocket连接会占用一个文件句柄,上限不足会直接导致连接失败或断开。
    • 若单台VM线程数过多引发CPU上下文切换频繁,需调整线程组分配,让3台VM的连接数尽量平均,避免单台过载。
  • 优化Ping/Pong机制

    • 调整Ping发送间隔,确保小于服务端的连接超时时间(比如服务端超时设为60秒,Ping间隔就设为45秒),防止服务端因超时主动断开连接。
    • 添加Pong响应超时判断:若发送Ping后超过指定时间未收到Pong,立即触发重连逻辑,避免无效连接占用资源。
    • 避免全局批量Ping,改为每个连接独立维护Ping周期,防止同时发送Ping导致的流量突增引发服务端限流。
  • 调整测试结构

    • 将连接初始化(open connection、connect、subscribe events)移至Setup Thread Group,专门负责连接创建;维持连接的Ping/Pong逻辑放在普通线程组,分离初始化和保活逻辑,提升测试稳定性。
    • 替换Loop Controller中的Flow Control Action,改用JSR223 Sampler编写自定义定时逻辑,精准控制每个连接的Ping间隔,避免统一暂停导致的同步流量冲击。
  • 调优TCP内核参数
    修改VM的TCP内核参数,提升连接处理能力:

    • net.ipv4.tcp_tw_reuse = 1:允许复用TIME_WAIT状态的套接字,减少资源占用
    • net.ipv4.tcp_fin_timeout = 30:缩短FIN_WAIT2状态的超时时间
    • net.core.somaxconn = 65535:增大TCP监听队列上限,避免连接被拒绝
  • 协同排查服务端限制
    联系DevOps团队确认服务端的WebSocket配置:

    • 是否存在最大连接数阈值,若有需调整至满足10k+连接的需求
    • 服务端的连接超时、空闲断开逻辑是否合理,是否因资源不足主动踢除连接
    • 查看服务端的CPU、内存、网络监控,确认是否因服务端过载导致连接断开
  • 均衡分布式测试负载
    检查3台VM的活跃连接数分布,确保每台负载均匀。若某台连接数过多,调整对应VM的线程组线程数,让每台维持3500左右的连接(留一定余量),避免单台资源耗尽。

内容的提问来源于stack exchange,提问作者Mzee Bakari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 21:56:01