首页 > 解决方案 > 我在 NodeJS 中编写了 Mongo db 连接代码,它运行良好,但在 Jmeter 中失败

问题描述

我正在尝试使用 java 脚本作为脚本语言将 Jmeter 连接到 MongoDB,但它失败了。

我在节点 JS 中尝试过相同的代码,它运行良好,但在 Jmeter 中失败

var mongo = require('mongodb');

var MongoClient = mongo.MongoClient;

var url = 'mongodb://10.80.47.101:27017';

 MongoClient.connect(url, { useNewUrlParser: true }, (err, client) => {

 if (err) throw err;

const db = client.db("scorecard");

db.listCollections().toArray().then((docs) => {

    console.log('Available collections:');
    docs.forEach((doc, idx, array) => { console.log(doc.name) });

}).catch((err) => {

    console.log(err);
}).finally(() => {

    client.close();
});

});

我在 Jmeter 中收到此错误:

响应代码:500 响应消息:javax.script.ScriptException::9:6 预期:但发现(如果(错误)抛出错误;^ 在第 9 行第 6 列

标签: javascriptjavamongodbjmeter

解决方案


  1. JMeter 执行 JavaScript 的可能性仅限于Nashorn 引擎require,因为它不是 JavaScript API 的一部分,所以您的脚本将在第一行失败,它来自Node.js
  2. 从 JMeter 3.1 开始,不建议使用 Groovy 以外的语言编写任何形式的脚本

因此,与其尝试使用 JavaScript 代码加载测试 Mongo 实例,不如:

  1. 下载与您的 Mongo 版本匹配的MongoDB Java 驱动程序并将其放入JMeter Classpath
  2. 重新启动 JMeter 以拾取 .jar
  3. JSR223 采样器添加到您的测试计划中
  4. 在 Groovy 中编写你的逻辑,检查你的特定 Mongo Java 驱动程序版本的JavaDoc以获得正确的语法

更多信息:使用 JMeter 进行 MongoDB 性能测试


推荐阅读