mongodb怎么做性能测试,看看这篇大神总结(代码片段)

软件测试君 软件测试君     2023-04-03     306

关键词:

01 MongoDB测试程序说明

本文主要测试的是mongodb插入数据的效率。利用的是某老师提供的mongodb二次开发接口。

数据的结构体为:

Struct keyvalmeta

Char name[64];

Int valType;

DateTime nStartTime;

DateTime nEndTime;

Int nUserDefMetaSize;

Char* pUserDefMetaDat;


上述结构体简略了其他部分,只是提供一个参考。

结构体语义解析:

  • valType表示的是Value的类型,该对象是对于三维空间的对象。
  • nStartTime有效时间起始点。
  • nEndTime有效时间终止点。
  • nUserDefMetaSize用户自定义的元数据长度。
  • pUserDefMetaDat用户自定义的元数据,如XML格式。

下面为测试的代码,先初始化结构体的数据,然后使用clock()函数(时之间的CPU时钟计时单元)来设置起始时间start,通过一个循环插入数据,循环以后再次记录结束时间finish:

CreateAndConnect();//connect the mongodb

InitOrOpenDb();//initial the db

OpenWorkspace();//open a work space



//initial the data

int nMaxSize=32*1024*1024;

char* pFileDat=new char[nMaxSize];

int nFileSize;

keyvalmeta kvm;

strcpy(kvm.name,"whu");

const int TESTNUM=100000;

clock_t start,finish;



//get the file's data

FILE* fp;

fp=fopen("c:\\\\bin\\\\1.xml","rb");

nFileSize=fread(pFileDat,1,nMaxSize,fp);

fclose(fp);

kvm.nUserDefMetaSize=nFileSize;

kvm.pUserDefMetaDat=new char[kvm.nUserDefMetaSize];



//start the test

start=clock();

for(int i=0;i<TESTNUM;i++)



InsertKeyVal(kvm);//insert the record





delete [] kvm.pUserDefMetaDat;

finish=clock();

cout<<"time:"<<(double)(finish-start)/CLOCKS_PER_SEC<<"S"<<endl;

cout<<"insert finished"<<endl;

getchar();

从上述的程序可以得知,可变的量为两个:循环次数TESTNUM和文件流大小1.XML。

02 数据结构解析

在测试前,我先讲下一般测试的注意事项:

  • 测试最好用台式机并且稳定性较强(通常是散热问题影响较大),不建议使用笔记本。
  • 通常有的服务器或者普通台式机因为还在使用32位系统,我就要提醒下,32位系统最多存储1G多,所以,插入大量的数据时就要注意下。64位系统的最多能存储32位系统*232 ,大概是4EB左右(1EB=1024PB,1PB=1024TB,1TB=1024G)

一开始我使用笔记本测试性能。插入100w条数据,XML大小为258kb。

使用MongoDBVUE查看如图:

通过UI界面只能知道大概的数据情况,要了解具体数据还要通过shell命令的db.keyvalmeta.stats(),

输出如图所示:

mongodb存储解析:

插入的单个数据块大小为258+104=362(byte)其中258为插入文件的大小,104为结构体的大小

总Size=362*1000000=362000000(和shell命令里的360000024相差无几)

内存利用率=1-(storageSize-size)/storegeSize*100%=87.6%,内存率利用挺高的。

03 笔记本测试数据

通过64位系统的笔记本测试,使用的时间如下表所示,每次显示的时间不是很稳定。

29.54  50.3  42.66  55.96  57.48  59.26  72.19  89.75  67.92  58.82

55.83  61.96  70.2  64.12

去掉最低值29.54和去掉最高值89.75。平均的时间为:59.72,花费的时间有点吓人,插入100w条数据要等个一分钟左右。

数据的浮动比较大,所以不建议使用笔记本,稳定性不好。

04 服务器测试数据

下面使用的是32位系统的台式机(本机子是服务器,读盘速度较快),测试方法和上述的笔记本一样。

A/B,A代表的是插入的条数,B代表的是文件大小,后面显示的数据为插入花费的总时间。

根据上表,可以统计下数据如下:

下图以文件大小为横坐标,花费的时间为纵坐标

下图以插入的条数为横坐标,花费的时间为纵坐标

通过图表可以看出,文件大小的所花费的时间浮动比较小,文件大小和插入时间的花费成正比例关系,但是系数较小。

插入的条数和插入时间的花费也成正比例关系,系数大约为2(这些数据比较容易让人理解)。

下面是测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

jmeter怎么做接口测试/性能测试/压力测试(步骤)

目录JMeter接⼝测试流程详解1、Jmeter简介2、Jmeter安装3、设置Jmeter语⾔为中⽂环境4、Jmeter主要元件5、Jmeter元件的作⽤域和执⾏顺序6、Jmeter进⾏接⼝测试流程7、Jmeter进⾏接⼝测试流程步骤详解8、总结JMeter性能测试的步骤?第... 查看详情

jmeter怎么做接口测试/性能测试/压力测试(步骤)

目录JMeter接⼝测试流程详解1、Jmeter简介2、Jmeter安装3、设置Jmeter语⾔为中⽂环境4、Jmeter主要元件5、Jmeter元件的作⽤域和执⾏顺序6、Jmeter进⾏接⼝测试流程7、Jmeter进⾏接⼝测试流程步骤详解8、总结JMeter性能测试的步骤?第... 查看详情

jmeter怎么做接口测试/性能测试/压力测试(步骤)

目录JMeter接⼝测试流程详解1、Jmeter简介2、Jmeter安装3、设置Jmeter语⾔为中⽂环境4、Jmeter主要元件5、Jmeter元件的作⽤域和执⾏顺序6、Jmeter进⾏接⼝测试流程7、Jmeter进⾏接⼝测试流程步骤详解8、总结JMeter性能测试的步骤?第... 查看详情

(转载)性能测试应该怎么做?

(转载)性能测试应该怎么做?转自:https://coolshell.cn/articles/17381.html 偶然间看到了阿里中间件Dubbo的性能测试报告,我觉得这份性能测试报告让人觉得做这性能测试的人根本不懂性能测试,我觉得这份报告会把大众带沟里去,所以... 查看详情

性能测试

1,首先做性能测试,要搜集性能测试需求,符合自己公司业务场景及系统。例如,你们的前端登录系统,老大说让你做一个性能测试,你按照12306的标准去做并发,那不是傻逼吗?你们服务器再牛逼也会宕机啊,所以要搜集业务... 查看详情

看看大神们是怎么解决一些bng的哪!!!!

作者:姚冬 遇到bng的分享我曾经做了两年大型软件的维护工作,那个项目有10多年了,大约3000万行以上的代码,参与过开发的有数千人,代码checkout出来有大约5个GB,而且bug特别多,open的有上千,即使最高优先级的showstopper... 查看详情

性能测试:聊聊性能优化模式

...藏的技术贴,难得今天有空,看了篇美团技术团队的关于性能优化的内容,感觉不错,将其中的一些观点和方法做了总结归纳,其中还掺杂一些个人的思考,写下这篇博客,以备日后查阅。。。原文链接:性能优化模式 一、... 查看详情

基础性能测试知识学习路线(看看这篇,好好学习)

学习路线+测试实用干货精选汇总,→欢迎关注微信公众号:程序员一凡,公众号长期做「有价值的输出」是最低标准学习路线+测试实用干货精选汇总,→欢迎关注微信公众号:程序员一凡,公众号长期做「有价值的输出」是最... 查看详情

验证码是自动化的天敌?看看大神是怎么解决的

每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试01验证码1、什么是验证码:指一种随机生成的信息... 查看详情

史上最全软件测试工程师常见的面试题总结多测师

1)负载测试和压力测试区别?2)1000个用户的并发测试怎么测?3)一个杯子从哪方面测?4)jenkins怎么用的?5)第一个项目哪些方面做了自动化?6)哪些方面可以做性能测试?7)搭建性能环境从哪几个方面考虑?8)手机app测试和web测试的... 查看详情

mongodbin数量限制

...数是没有限制的,但是对整个sql语句是有大小限制的那么MongoDB又是什么情况呢?上网查了一下,记录下来,分享给大家详见大神分析,原文链接中文翻译、总结一下:(想知道以上数据是怎么来的,可以点那个原文链接,进去... 查看详情

写给五年前的自己(软件测试工程师总结)

    五年前,偶然机会进入测试行业,那个时候,实习什么都不懂,特别羡慕有三五年测试经验的人,想着,等自己也有五年经验了,也要像博客园的大神一样,给初入测试行业的同学一些有用的建议和指导,如今... 查看详情

性能测试应该怎么做?

    偶然间看到了阿里中间件 Dubbo的性能测试报告,我觉得这份性能测试报告让人觉得做这性能测试的人根本不懂性能测试,我觉得这份报告会把大众带沟里去,所以,想写下这篇文章,做一点科普。  首先,这... 查看详情

jmeter性能测试

...次B被处理时被识别为无效的token。求问大神,这种情况要怎么处理,急急急!!!把登陆改为cookie进行登陆参考技术A登录只做一次 查看详情

关于软件测试的毕业论文要怎么写拜托各位大神

参考技术A如何写好测试计划,测试用例,测试策略;如果进行自动化测试,功能测试,性能测试;如何通过测试提高软件质量;某某项目测试如何开展等等可细化到某一方向,任选一个,也可全流程覆盖本回答被提问者采纳 查看详情

loadrunner-检测到的响应时间远小于用户实际查询时间。哪位大神能帮忙看看?急急急~!

说明:做一个简单的刷新报表的性能测试,点击刷新前加入事物,等数据出来后,加入结束事物,并加入了检查点。同一个报表,我手工执行刷新,大约20s才能出报表,但是Loadrunner监控到的响应时间却只有几秒。请大神帮忙分... 查看详情

转-mongodb亿级数据量的性能测试

【原贴】Mongodb亿级数据量的性能测试 进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目: (所有插入都是单线程进行,所有读取都是多线程进行)1)普通插入性能(插入的数据每条大约在1KB左右)2)批... 查看详情

性能测试性能测试的基本流程

性能测试从实际执行层面来看,测试的过程一般分为这么几个阶段,如下图:下面看看每个阶段具体需要做什么:一、性能需求分析性能需求分析是整个性能测试工作开展的基础,如果连性能的需求都没弄清... 查看详情