在1台测试机上面处理测试结果并没啥,比较麻烦的是合并2台测试机的测试结果。
首先说说,为什么我们需要使用2台(甚至3台、4台)测试机对服务器发送大量的请求呢?说白了就是测试机配置太弱了,服务器太牛逼。有时候我的测试机是4核的,但是服务器居然是16核、32核。如果测试机也是32核的话,只用1台测试机就能搞定工作。
引用一段比较专业的说法
“
作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。不过,JMeter也可以像 LoadRunner 一样通过使用多台机器运行所谓的代理来分担负载产生器自身的压力,并借此来获取更大的并发用户数。
”
上面这段话也可以归结为:测试机的配置太弱了,但凡是16核的测试机,Jmeter对于CPU和内存再消耗惊人,能怎么样?完全HOLD住。
-------------------------------------------------------------------------------------------------------------------------------------------------------------
下面的内容仅仅是叙述了我如何合并2台测试机的测试结果,用到的Linux命令包括:vi、cp、tar、rz、sz、cat。熟能生巧,没啥太特别的东西,备份一下以免长期不用忘了咋用。
-------------------------------------------------------------------------------------------------------------------------------------------------------------
举例开始了,我们假设只有2台测试机,所以只需要将2个测试结果文件合并就可以了:
//将2台测试机/result目录下的result.csv文件通过vi打开,去掉首行然后保存。因为首行显示的是jmeter-configure的标题(如下图),会影响结果的计算
//接下来操作都是在这两台测试机的/result目录下执行,!!!!别去其它目录!!!!!!
- # vi result.csv
- 去除行首的标题后,保存并退出
//在其中1台测试机内(叫它测试机a),将测试结果文件重新命名(原名是:result.csv),原因是我们在执行多台测试机并发的时候,在每台测试机保存的结果文件的名字是相同的。所以需要将名字修改成不相同的,以便执行合并结果的操作
//cp 已有文件名 新文件名
- # cp result.csv result01.csv
//在测试机a的操作界面内,将已经重新命名的结果文件压缩
//tar –zcvf 文件名.tar.gz 文件名
- #tar –zcvf result01.csv.tar.gz result01.csv
//在测试机a的操作界面内,将已压缩的结果文件从测试机a下载到本地
- #sz result01.csv.tar.gz
//切换到另1台测试机的界面(叫它测试机b),
//在测试机b的操作界面内,上传已经保存在本地的测试机a的结果文件到测试机b
- #rz
- 选择文件result01.csv.tar.gz,确认
//在测试机b的操作界面内,解压缩测试机a的结果文件
- #tar –zxvf result01.csv.tar.gz
//在测试机b的操作界面内,合并结果集(此时体现了重新命名测试结果文件的意义)
//将测试机a的已重新命名的测试结果文件(原名是:result.csv,重新命名后的文件名:result01.csv)追加到测试机b的测试结果文件内,合并为1个文件以便计算测试结果
- #cat result01.csv >> result.csv
//在测试机b的操作界面内,统计测试结果并且计算TPS
- #wc -l result.csv
- 服务器的总响应数目 / 脚本运行时间 = TPS