上一篇文章我们说到了jmeter命令行运行但是是单节点下的, jmeter底层用java开发,耗内存、cpu,如果项目要求大并发去压测服务端的话,jmeter单节点难以完成大并发的请求,这时就需要对jmeter进行分布式测试:

1:先说说分布式测试原理

处理过程:

一:调度机master启动以后,会拷贝本地的jmx文件分发到远程的slave机器上;

二:slave机器拿到脚本以后启动命令行模式去执行脚本,对于每台slave机器拿到的脚本都是一样的,所以如果jmx脚本为50个线程跑3分钟,那么实际并发就是50*3=150个线程并发跑3分钟;

三:执行时,slave会把执行获得的数据结果传给master机器,master机器会收集所有slave机器的信息并汇总,这样master机器上就存在一份所有slave机器汇总的数据结果。

注意事项:

一:我们注意到master机器启动后会拷贝jmx文件到slave机器,所以我们不需要在每台slave机器上也上传一份jmx,只需要在master机器上上传一份jmx脚本即可。

二:参数化文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。

三:调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为master。

四:保证每台机器的jmeter版本和插件版本相同,避免造成一些意外问题。

五:分布式测试总样本数 = 线程数 * 循环次数 * 执行机总数, 样本计数逻辑为:执行机slave执行的测试脚本是由调度机master分发的,故每台执行机执行的测试脚本都是相同的,故而性能测试总样本数 = 测试脚本样本数 * 执行机总数,而测试脚本样本数为线程数 * 循环次数

2:说完了原理,现在我们来说如何做jmeter分布式测试

  • 在所有需要做分布式的机器上部署java和jmeter,要求需要保证每台机器上部署的jmeter版本相同插件版本也相同,最好部署在同一路径下(这样如果有csv参数化比较方便)

部署jmeter很简单,只需从官网下载相应版本然后传到服务器上进行解压缩就可以了这里给出我的云盘地址:http://pan.baidu.com/s/1bI3r2I 密码:f5ll。

比如我部署在134.64.14.95、134.64.14.96、134.64.14.97、134.64.14.98四台机器上,每台机器部署路径为:/home/tester

  • 修改slave机器bin目录下的jmeter.properties配置,我的3台slave机器为:134.64.14.96、134.64.14.97、134.64.14.98

修改3台slave机器jmeter/bin目录下的jmeter.properties中server_port端口号为机器未被占用的端口号,一般默认为1099,此处我修改为7899(可以使用默认端口或者改成其他端口,只要未被占用就行),remote_hosts为127.0.0.1不需要修改

修改完成保存,我配置的3台机器为:

134.64.14.96机器(remote_hosts:127.0.0.1、server_port:7899)

134.64.14.97机器(remote_hosts:127.0.0.1、server_port:7899)

134.64.14.98机器(remote_hosts:127.0.0.1、server_port:7899)

  • 完成slave机器的配置后,此时配置master机器,我的1台master机器为134.64.14.95

注意到由于master机器作为调度机本身会有一定的性能消耗所以我们配置远程执行机的时候并没有把master机器配置进去,只配置了3台执行机

修改完成保存,我配置的1台机器为:

134.64.14.95机器(remote_hosts:134.64.14.96:7899,134.64.14.97:7899,134.64.14.98:7899、server_port:注释掉不用打开)

  • 完成了所有机器配置后,我们需要上传测试脚本,测试时只需要上传jmx文件到master机器即134.64.14.95机器的jmeter对应目录即可,其他执行机不需要上传jmx文件,因为master启动后会拷贝本地jmx到远程执行机上

  • 现在我们来启动分布式测试,启动分布式测试分两步:

一:首先启动执行机即slave机器134.64.14.96、134.64.14.97、134.64.14.98,每台slave机器都需要执行以下命令来启动jmeter-server

命令为:./jmeter-server

二:确认3台slave执行机都启动正确完成后,在启动master机器134.64.14.95,执行如下命令开启分布式测试

命令为:./jmeter -n -t baidu_requests_results.jmx -r -l baidu_requests_results.jtl

3:测试命令说明

./jmeter -n -t baidu_requests_results.jmx -r -l baidu_requests_results.jtl

n表示无GUI运行
t表示要运行的jmx文件
l指生成的文件名称
r指远程将所有agent启动
 

4:测试结果说明

注意到上面控制台打印的信息中

summary +   5504 in 00:00:02 = 3590.3/s Avg:     1 Min:     0 Max:   174 Err:  5504 (100.00%) Active: 59 Started: 58 Finished: 0
summary
+ 1224043 in 00:00:30 = 40802.8/s Avg:     0 Min:     0 Max:   188 Err:
1224043 (100.00%) Active: 60 Started: 59 Finished: 0
summary = 1229547 in 00:00:32 = 38989.9/s Avg:     0 Min:     0 Max:   188 Err: 1229547 (100.00%)
解析:
summary为请求数目,指在多少时间内增加了多少请求数目,由此算出后面的3590.3/s、40802.8/s、38989.9/s也就是每秒完成请求数(吞吐量),每隔一段时间打印一行,最后一行可以看到请求总数为8213739,平均吞吐量为45495.4/s(每秒完成请求数)
summary = 8213739 in 00:03:01 = 45495.4/s Avg:     0 Min:     0 Max:   191 Err: 8213739 (100.00%)
另外active:60指活跃线程数,我们用3台机器并发测试,每台运行的脚本都为20个线程3分钟,所以在线活跃线程数为20*3=60个,运行时间为3分钟
错误率为:可以看出服务器能否承受这么大的并发,这里都是100%报错是由于同一ip短时间并发请求百度,百度是不允许的,所以会被拒绝发生报错
 
当然我们除了看控制台的信息以外,性能测试还需要关注:所有测试机器以及被测试机器的服务器指标如:cpu、磁盘io、内存消耗等,以及服务端和客户端日志信息
对于生成的jtl文件,我们可以进行解析生成我们关注的信息如:吞吐量、响应时间、点击率、错误率等等
对于jtl文件的如何转换成图表及解析,在我的博客jmeter系列博文之-jmeter之jtl测试报告中有详细说明 
 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
来源:https://www.cnblogs.com/miaomiaokaixin/p/6116927.html

jmeter非GUI模式运行-分布式测试的更多相关文章

  1. 『动善时』JMeter基础 — 55、JMeter非GUI模式运行

    目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.怎样使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模 ...

  2. Jmeter非GUI模式运行

    非GUI模式,即命令行模式,运行 JMeter 测试脚本能够大大缩减所需要的系统资源. 使用的命令: jmeter  -n  -t  脚本文件路径   -l   结果输出文件路径   -j   日志文 ...

  3. 使用非 GUI 模式运行 JMeter 压力测试

    使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源.使用命令jmeter -n -t <testplan filename> -l <list ...

  4. 『动善时』JMeter基础 — 55、使用非GUI模式运行JMeter(命令行模式)

    目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模式运 ...

  5. 转:Jmeter以non-gui模式进行分布式测试

    由于Jmeter是一个纯JAVA的应用,用GUI模式运行压力测试时,对客户端的资源消耗是相当惊人的,所以在进行正式的压测时一定要使用non-gui模式运行,如果并发数很高或者客户端的硬件资源比较一般的 ...

  6. 非 GUI 模式运行 JMeter 压力测试

    非 GUI 模式,即命令行模式,运行 JMeter 测试脚本能够大大缩减所需要的系统资源. 使用命令:jmeter -n -t <testplan filename> -l <lis ...

  7. 非GUI 模式运行 jmeter 压力测试

    非 GUI 模式,即命令行模式,运行 JMeter 测试脚本能够大大缩减所需要的系统资源. 使用命令:jmeter -n -t <testplan filename> -l <lis ...

  8. 非GUI模式运行Jmeter脚本

    一.应用场景 日常测试过程中发现,在大数量并发时,jmeterGUI界面经常宕机.卡死,在这种情况下我们就需要使用命令行来执行脚本了(非GUI模式). 二.命令行模式优点 1.节约系统资源,无需启动界 ...

  9. Jmeter非GUI模式启动

    首先我们需要了解,GUI和非GUI模式启动Jmeter对测试的影响:Jmeter可视化界面及监听器展示结果需要消耗负载资源,从而导致,在大并发的情况下GUI方式会导致负载机资源紧张,对性能造成影响 e ...

  10. jmeter非GUI模式如何压测并生成测试报告

    在启动Jmeter时,我们会看到这样一句提示: 不要使用GUI模式(界面模式)进行负载测试,GUI模式只能用于创建测试和调试.进行负载测试时,需要时用非GUI模式. 那么为什么进行负载测试时一定要用非 ...

随机推荐

  1. springboot集成xxl-job问题

    Client-error:unknown code for readObject at 0x3c (<) 原因之一是classNotFoundRxception :com.caucho.hess ...

  2. Pytest初识

    一.单元测试框架简介 1. 什么是单元测试 单元测试是指在软件开发过程中,针对软件的最小单位(函数,方法)进行正确性的检查测试. 2. 常用单元测试框架 2.1 Java 类别 junit testn ...

  3. python脚本打包

    python脚本打包 Python写脚本很方便,可以直接在机器上运行,但有时候脚本源码不方便透露或是其他机器不支持的原因,需要将其打包成可执行文件,需要用到 pyinstaller 首先下载pip s ...

  4. ipvsadm DR模型的实现方式

    DR模型的lvs ----在实现DR模型的时候所有RS都要屏蔽掉ARP请求的响应 实现方法:1.可以用路由器绑定静态VIP:MAC(DVIP)2.可以使用arptables3.可以使用 kernel ...

  5. IC杂记

    BNF(Backus-Naur Form) 巴科斯范式, 以美国人巴科斯(Backus)和丹麦人诺尔(Naur)的名字命名的一种形式化的语法表示方法,用来描述语法的一种形式体系,是一种典型的元语言.又 ...

  6. 小白之Python-基础中的基础01

    Python-基础中的基础01 第一次写博客笔记,尝试并监督下自己. 每一天都值得期待! 20170803 -----------------华丽的分界线------------- Python之-- ...

  7. 对词向量模型Word2Vec和GloVe的理解

    Word2Vec Word2Vec 是 google 在2013年提出的词向量模型,通过 Word2Vec 可以用数值向量表示单词,且在向量空间中可以很好地衡量两个单词的相似性. 简述 我们知道,在使 ...

  8. Go--生成excel表格,读取excel表格数据

    先下载第三方依赖包: go get -u github.com/xuri/excelize/v2 代码: package main import ( "fmt" "git ...

  9. keycloak 找出特定客户端权限的user 配置OTP

    背景:项目组中有用到keycloak给两个应用进行登录认证使用.其中有一个应用放在公网,安全部门同事说 不能直接账号密码登录,容易破解,需要进行二次验证. 刚好查到keycloak支持OTP(one ...

  10. selenium grid4.0+分布式的部署配置(hub/node方式)

    一.grid安装 本文已jar包的方式讲解,访问并下载jar包:Releases · SeleniumHQ/selenium · GitHub 二.grid配置 假设主机:10.1.5.219,从机: ...