使用JMeter的JSR223连接MongoDB Atlas时遇问题求助
解决JMeter连接MongoDB Atlas的问题
1. 修复驱动版本冲突
你当前混用了3.12.x的MongoDB驱动和4.9.1的BSON包,版本不兼容会直接导致连接失败。必须使用同版本号的驱动与BSON包:
- 移除
bson-4.9.1.jar,下载与mongo-java-driver-3.12.13.jar同版本的bson-3.12.13.jar - 确保所有MongoDB相关Jar包版本完全一致,避免依赖冲突
2. 确认Jar包放置路径
将以下Jar包放在JMeter安装目录的/lib/ext文件夹下:
bson-3.12.13.jarmongo-java-driver-3.12.13.jargroovy-4.0.11.jar
放置完成后重启JMeter,确保Jar包被正确加载。
3. 检查MongoDB Atlas的IP白名单
Atlas默认会拒绝未授权IP的连接请求:
- 登录Atlas控制台,进入你的集群页面
- 点击「Network Access」,添加你的公网IP地址(测试阶段可临时选择允许所有IP,生产环境需严格限制)
- 保存配置后等待1-2分钟生效
4. 正确配置连接字符串
Atlas提供的连接字符串格式为mongodb+srv://<username>:<password>@<cluster-name>.mongodb.net/?retryWrites=true&w=majority,注意:
- 替换
<username>为你的Atlas数据库用户名 - 替换
<password>为你的密码,如果密码包含特殊字符(如@、&、#),需要进行URL编码(例如@替换为%40) - 在JMeter的
MongoDB Source Config中,将「Connection String」字段设置为处理后的完整字符串 - 确保「Database Name」填写正确的目标数据库名称
5. 用Groovy脚本排查具体错误
如果仍连接失败,建议用JSR223 Sampler(选择Groovy语言)编写测试代码,获取详细报错信息:
import com.mongodb.client.MongoClients import com.mongodb.client.MongoDatabase try { def connectionString = "你的Atlas连接字符串" def mongoClient = MongoClients.create(connectionString) def database = mongoClient.getDatabase("你的数据库名") log.info("连接成功,数据库名称:" + database.getName()) mongoClient.close() } catch (Exception e) { log.error("连接失败:" + e.getMessage(), e) }
运行后查看JMeter「View Results Tree」中的日志,根据具体错误(如认证失败、连接超时、IP被拒绝)针对性解决。
内容的提问来源于stack exchange,提问作者Juan Villegas
相关产品推荐
相关产品推荐

