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

Selenium Grid并行测试:为何并发数依赖Hub处理器数量?

问题

搭建基于Selenium Grid 4.7.2的并行测试系统,环境配置如下:

  • 4台Windows Node节点,每台配备4个可用处理器,启动命令:
    java -jar "C:\SeleniumGrid\selenium-server-4.7.2.jar" node --hub {hub-machine-url} --max-sessions 4
    
  • Hub服务器最初为2个可用处理器的Windows机器,启动命令:
    java -jar "C:\SeleniumGrid\selenium-server-4.7.2.jar" hub
    

运行测试套件时发现:仅能创建2个并发测试会话,其余14个处理器(4台Node×4核 - 2)处于空闲状态;更换为16核的Hub机器后,可同时运行16个测试用例(跑满所有Node的总容量)。所有节点均已成功连接Hub,请问为何并发测试用例数量取决于Hub机器的可用处理器数?

原因分析

这是Selenium Grid 4的默认配置限制导致的:

  • Selenium Grid 4的Hub内部通过sessionqueue线程池处理会话请求的调度与分配,该线程池的默认大小等于Hub机器的可用处理器数(由Runtime.getRuntime().availableProcessors()自动获取)
  • 当Hub为2核时,线程池最多同时处理2个会话请求,即使Node节点有足够的空闲容量(4×4=16),也无法分配更多并发会话
  • 更换为16核Hub后,线程池默认大小变为16,刚好匹配所有Node的总并发容量,因此可以跑满16个测试用例
解决方案

启动Hub时手动指定--sessionqueue-thread-pool-size参数,设置为需要的最大并发数(比如匹配所有Node的总max-sessions之和16),即可脱离Hub处理器数的限制:

java -jar "C:\SeleniumGrid\selenium-server-4.7.2.jar" hub --sessionqueue-thread-pool-size 16

说明:该参数是Selenium Grid 4新增的配置项,用于控制Hub处理会话请求的并发能力,默认值绑定Hub的可用处理器数,这是与Grid 3的核心差异之一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:06:54