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

在家进行WebSocket性能测试:解决TCP连接数限制的方法

在家环境下WebSocket高并发性能测试方案

问题根源说明

个人PC的TCP连接数受系统内核参数、硬件资源(CPU/内存)双重限制,16500个连接已经触及普通家用PC的瓶颈。后续测试无法启动,大概率是前一次测试的连接未完全释放(比如TIME_WAIT状态的连接占满端口),或是系统资源(内存/文件句柄)未回收干净。


可行的测试优化方案

1. 调整系统参数,提升真实连接承载上限

  • Linux系统:修改文件句柄限制,编辑/etc/security/limits.conf,添加:
    * soft nofile 65535
    * hard nofile 65535
    
    同时调整TCP参数,编辑/etc/sysctl.conf:
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.ip_local_port_range = 1024 65535
    
    执行sysctl -p生效,减少TIME_WAIT连接占用,扩大可用端口范围。
  • Windows系统:修改注册表(需管理员权限):
    • 路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
    • 新增DWORD值MaxUserPort,设为65534
    • 新增DWORD值TcpTimedWaitDelay,设为30
      重启系统生效。
  • JMeter优化:必须用非GUI模式运行,避免GUI资源消耗:
    jmeter -n -t your_test_plan.jmx -l test_result.jtl
    
    同时调整JMeter堆内存,编辑jmeter.bat(Windows)或jmeter.sh(Linux),修改HEAP参数:
    HEAP="-Xms2g -Xmx8g"
    
    数值根据你的PC内存调整(比如16G内存可设为-Xmx12g)。

2. 换用轻量级工具,提升模拟密度

JMeter资源开销较高,换用专门的WebSocket压测工具可以模拟更多连接:

  • 用wscat配合Shell/Python脚本批量创建连接,循环启动wscat进程并发送消息,资源占用远低于JMeter。
  • 用autobahn-testsuite这类专业WebSocket测试工具,支持高并发连接模拟,资源消耗更可控。

3. 分布式拆分压力,突破单台PC限制

如果单台PC仍达不到测试需求,可通过本地虚拟机/容器拆分压测任务:

  • 开2-3台虚拟机(比如VirtualBox),每台运行一个压测进程,分摊连接压力,总并发数可达到多台机器的总和。
  • 用Docker容器批量启动压测实例,每个容器负责一部分连接,管理更便捷。

4. 简化场景,逐步逼近真实上限

  • 先测试单方向消息(客户端发→服务器收),找到单方向瓶颈后,再逐步切换到互发场景,避免一开始就压垮系统。
  • 分批创建连接:不要一次性启动所有用户,改为每秒创建500-1000个连接,给系统留缓冲时间,同时监控CPU、内存、网络使用率,观察系统何时触及瓶颈。

关于“无限制虚拟连接”的说明

不存在真正的无限制虚拟连接——任何模拟都需要消耗CPU、内存、网络资源,哪怕是最轻量化的模拟,最终都会受限于PC硬件上限。如果要测试十万级以上并发,在家环境很难实现,建议临时租用云服务器高配置实例,做分布式压测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:00:25