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

EC2实例中JMeter WebDriver测试ChromeDriver会话创建失败求助

JMeter WebDriver Sampler 启动失败问题排查

环境信息

  • 运行环境:EC2 Linux实例
  • 系统参数:os.name: 'Linux', os.arch: 'amd64', os.version: '6.8.0-1026-aws'
  • Java版本:11.0.26
  • Chrome版本:135.0.7049.84,ChromeDriver版本与之匹配
  • JMeter组件:
    • JMeter版本:5.4
    • WebDriver插件版本:4.13.0.2
    • Selenium依赖jar版本:4.13.0

测试执行命令

sh jmeter -n -t ../../<jmeter_path>/fe_automation.jmx -JfileName=<file_path>/file.csv -JthreadNumber=1 -JrampUp=1 -JloopCount=1

ChromeDriver配置已勾选:

  • Headless模式
  • Maximize browser window
  • Create a new Browser at the start of each iteration

错误日志

2025-04-15 14:29:56,120 INFO o.a.j.t.JMeterThread: Thread started: PARAMETRIC Login su piattaforma 1-1
2025-04-15 14:29:56,932 ERROR o.a.j.t.JMeterThread: Error calling threadStarted
org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: session not created: probably user data directory is already in use, please specify a unique value for --user-data-dir argument, or don't use --user-data-dir 
Host info: host: 'ip-172-31-25-66', ip: '172.31.25.66'
Build info: version: '4.13.0', revision: 'ba948ece5b*'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '6.8.0-1026-aws', java.version: '11.0.26'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [null, newSession {capabilities=[Capabilities {acceptInsecureCerts: false, browserName: chrome, goog:chromeOptions: {args: [--remote-allow-origins=*, --start-maximized, --headless=new], extensions: []}, proxy: Proxy(direct)}]}]
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:140) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:96) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:68) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:163) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:196) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:171) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:602) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:163) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:108) ~[selenium-chromium-driver-4.13.0.jar:?]
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:88) ~[selenium-chrome-driver-4.13.0.jar:?]
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:83) ~[selenium-chrome-driver-4.13.0.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:28) ~[jmeter-plugins-webdriver-4.13.0.2.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:14) ~[jmeter-plugins-webdriver-4.13.0.2.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.getPreparedBrowser(WebDriverConfig.java:223) ~[jmeter-plugins-webdriver-4.13.0.2.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.threadStarted(WebDriverConfig.java:154) ~[jmeter-plugins-webdriver-4.13.0.2.jar:?]
    at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:781) [ApacheJMeter_core.jar:5.4]
    at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:993) [jorphan.jar:5.4]
    at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:976) [jorphan.jar:5.4]
    at org.apache.jmeter.threads.JMeterThread.threadStarted(JMeterThread.java:749) [ApacheJMeter_core.jar:5.4]
    at org.apache.jmeter.threads.JMeterThread.initRun(JMeterThread.java:737) [ApacheJMeter_core.jar:5.4]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:252) [ApacheJMeter_core.jar:5.4]
    at java.lang.Thread.run(Thread.java:829) [?:?]
2025-04-15 14:29:57,143 ERROR o.a.j.t.JMeterThread: Test failed!

已尝试的排查步骤

  • 在ChromeDriver配置中添加额外启动参数,但问题未解决
  • 本地机器测试可正常执行,仅EC2环境出现问题

解决方案

1. 指定唯一用户数据目录

在ChromeDriver配置的Additional Command Line Arguments中添加:

--user-data-dir=/tmp/chrome-profile-${__threadNum}-${__time(yyyyMMddHHmmssSSS)}

通过JMeter内置函数生成线程ID+时间戳的唯一目录,避免多个会话复用同一用户数据目录导致冲突。

2. 清理残留Chrome进程

EC2环境中可能存在未正常退出的Chrome/Chromedriver进程,执行以下命令清理:

pkill -f chrome
pkill -f chromedriver

3. 添加Linux环境专属启动参数

补充以下参数解决Linux环境下的权限和资源限制问题:

--no-sandbox
--disable-dev-shm-usage

4. 检查文件权限

确保运行JMeter的用户对/tmp目录有读写权限,可执行以下命令验证:

ls -ld /tmp

若权限不足,调整目录权限:

chmod 777 /tmp

5. 确认组件版本兼容性

确保JMeter、WebDriver插件、Selenium jars三者版本完全匹配,当前使用的组合(JMeter5.4 + WebDriver4.13.0.2 + Selenium4.13.0)是兼容的,若问题仍存在可尝试更新插件至最新兼容版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:48:17