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
相关产品推荐
相关产品推荐

