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

多线程组场景下通过JMeter启动STS失效问题求助

多线程组场景下JMeter启动Simple Table Server(STS)的正确方案

核心问题分析

你遇到的问题本质是STS只能启动一个实例(默认占用9191端口),如果多个线程组同时执行启动命令,会触发端口占用冲突,最终只有一个实例能正常运行,其余线程组无法连接。

正确实现步骤

  • 添加setUp Thread Group(测试计划右键→添加→线程(用户)→setUp Thread Group),这个线程组会在所有普通线程组启动前仅执行一次,是做全局初始化操作的最优选择。
  • 在setUp Thread Group下添加JSR223采样器,写入带端口检查的启动代码,避免重复启动:
// 检查STS默认端口9191是否已被占用
def port = 9191
def socket = new Socket()
try {
    socket.connect(new InetSocketAddress("localhost", port), 1000)
    socket.close()
    log.info("STS already running on port ${port}")
} catch (ConnectException e) {
    // 端口未占用,启动STS
    def cmd = "C:/Windows/System32/cmd.exe /c start C:/jmeter/bin/simple-table-server.cmd"
    Runtime.getRuntime().exec(cmd)
    log.info("Started STS successfully")
    // 等待STS启动完成,可根据机器性能调整等待时长
    sleep(3000)
}
  • 所有普通线程组直接使用STS即可,无需再单独执行启动逻辑。

额外优化建议

  • 如果需要测试结束后自动关闭STS,可添加tearDown Thread Group,在其中执行关闭命令:
// 关闭STS进程
Runtime.getRuntime().exec("taskkill /f /im java.exe /fi \"windowtitle eq SimpleTableServer\"")
  • 确认JMeter的bin目录下存在simple-table-server.cmd文件,路径配置要准确。
  • 等待STS启动的时间可根据实际机器性能调整,避免普通线程组启动时STS还未就绪。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:37:08