JMeter MongoDB script使用方法

前提:

突發奇想想使用jmeter實現一套接口自動化腳本,但是在具體實現過程中發現前置條件中需要部分針對mongodb操作。

首先查資料看到有人使用mongoscripts的方式實現的,但是發現下載的jmeter3.0並沒有該sampler。於是寫了jsr233的sampler腳本實例如下

import com.mongodb.DB;
import org.apache.jmeter.protocol.mongodb.config.MongoDBHolder;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.mongodb.DBCollection; 
import com.mongodb.DBCursor;  
import com.mongodb.Mongo;  
import com.mongodb.MongoException;  


DB db = MongoDBHolder.getDBFromSource("db", "camera_android");


DBCollection coll = db.getCollection("androidId");
//查詢name
        DBCursor ret = coll.find();  
        while(ret.hasNext()){  
            BasicDBObject bdbObj = (BasicDBObject) ret.next();  
            if(bdbObj != null){
//把數據作爲參數保存在mypara參數中 在其他sample中以 "${mypara}" 的方式使用
               String result1 = bdbObj.getString("_id");
               String result2 = bdbObj.getString("androidId");
               String result3 = bdbObj.getString("mid");

            vars.put("select_id",result1);
            vars.put("select_androidId",result2);
            vars.put("select_mid",result3);
               
            }  
        } 


通過直接寫java的方式對mongodb進行操作,雖然實現了該功能但是存在問題:

1、代碼比較繁瑣

2、需要一點點的java基礎

PS:需要事先配置好MongoDB Source Config,如果需要其他的針對mongodb操作的腳本,可以打開jmeter下templates目錄下的mongodb.jmx。有jmeter自帶的例子,稍加修改即可使用。


雖然使用java實現了功能,但是感覺仍有優化的空間,在一些資料中看到了一些mongo scripts腳本的介紹,但是在3.0版本中一直沒有看到對應的sampler。訪問官網也只是一個標題和極少的內容,並且歸納爲不推薦使用。最後下載了一個2.13版本的jmeter終於找到了mongo scripts的sampler,保存然後在3.0中打開。從此就可以在3.0愉快的寫mongo scripts了。

使用前仍然需要配置MongoDB Source Config,並且在sampler中寫明source和db_name



最後說下經過自己對jmeter官方不推薦使用該sampler的一些猜想吧,在一次針對mongodb自身的benchmark中發現使用mongo script的時候無論如何設置TPS(jmeter中是throughtput/s)最大值只能無限的接近25。經過反編譯後發現貌似是插件中連接池限制了連接的問題導致,所以如果場景需要tps>25的需求,就只能通過jsr233 sampler了。


接下來無聊了打算改改寫下連接池,使直接寫mongo scripts的方式TPS能過25.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章