JMeter测试MongoDB Lock db占比奇高

晓擒 发布于 2013/11/14 12:54
阅读 2K+
收藏 0

想测试MongoDB的性能(算是一个作业吧),先想到用JMeter作为加压工具,在JMeter里添加线程组,MongDB Source Config除了设置了MongoDB connection其他都是默认设置。线程属性如图的情况

MongoDB Script里写入循环插入的数据,如图

、在运行起来以后,MongoDB的操作都无法进行了,包括mongostat,然后这个执行结束,mongostat的内容继续,也是不是可以说,这段时间JMeter的线程独占了MongoDB的进程?

如果插入内容减少为每个线程10条(或者查询十条),线程属性更改,线程数:100,循环1000,的话,mongostat查询出来的结果就是lock db项的值会接近100%,而且速度很慢。

另:同样的插入内容,如果用java写一个脚本,就不会出现类似的问题,mongostat监听正常,lock db的值也不会突破50%。

请问:

1、是因为我对JMeter的使用不正确吗?

2、是因为Jmeter的内部机制问题吗?

3、是MongoDB和Jmeter配合造成的吗?

加载中
0
天捱

我也遇到这个问题了.因为使用了eval指令,会lock整个数据库.

解决办法1:用jmeter执行java代码,(继承AbstractJavaSamplerClient类).

解决办法2:用jsr223的groovy脚本.

参考的jmeter文档:

This Element currently uses com.mongodb.DB#eval which takes a global write lock causing a performance impact on the database, see db.eval() . So it is better to avoid using this element for load testing and use JSR223+Groovy scripting using MongoDBHolder instead. MongoDB Script is more suitable for functionnal testing or test setup (setup/teardown threads)
返回顶部
顶部