一、什么是分布式测试

  分布式测试是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试

二、为什么分布式执行?

  在工作中使用jmeter高并发压力测试的场景下,单机受限内存、CPU、网络IO,会出现被测服务器压力还没有上去,但是执行机已经由于模拟的压力太大死机了。为了提供更强大的负载能力,使用分布式压测,部署在不同的服务器上,解决高并发的问题!

三、分布式压测原理:

(1)选择其中一台作为Master机(调度机),其他机器作为Slave机(执行机)

(2)执行时,Master机会把脚本发送到每台Slave机上,Slave机拿到脚本后就开始执行,不需要启动GU

(3)执行完成后,Slave机会把结果回传给Master机,Master机会收集所有Slave机的信息,并汇总

比如我在jmeter Master端配置线程数为10,循环次数为100,也就是会对测试服务器发起1000次请求,我有3台Slave机,如果我在Master端选择远程启动压力测试,那么每台Slave都会对测试服务器发起10*100次请求,那么这次压力测试产生的请求就是10*100*3=3000次。

四、分布式配置

(1)前提条件:

Slave机器的jdk版本需要跟Master机器的jdk版本保持一致

Slave机器的Jmeter版本以及插件需要跟Master机器保持一致,操作方法是直接将Master的Jmeter安装目录打包后解压到Slave机器上

Slave机器的网络需要跟Master机器的网络保持在同一个局域网,可以ping通

(2)Master机器配置

  在Jmeter的%JMETER_HOME%\bin目录下,使用文本编辑工具打开jmeter.properties配置文件,配置以下参数

remote_hosts=Slave机器IP:端口 #多台Slave机器则用英文逗号隔开)

例如:

remote_hosts=192.168.xx.10:1097,192.168.xx.20:1098

server.rmi.ssl.disable=true

mode=Standard  #开启标准模式(可以看到日志记录)

(3)Slave机器配置

  在Jmeter的%JMETER_HOME%\bin目录下,使用文本编辑工具打开jmeter.properties配置文件,配置以下参数

server_port=1097

server.rmi.port=1097

server.rmi.ssl.disable=true #去掉认证

(4)启动连接

配置完成,检查防火墙也关闭后,在Slave机器的Jmeter的%JMETER_HOME%\bin目录下,输入cmd进入命令行模式

在Slave命令行下开启Jmeter远程服务:jmeter-server.bat -Djava.rmi.server.hostname=本机IP,

在Master机器上,打开cmd终端命令行,使用“telnet IP 端口”的命令验证是否接通

五、gui分布式压测执行

  在Master机器上重新打开Jmeter的GUI界面,点击:运行—远程启动—单台Slave机或者点击"远程启动所有Slave机"!

Slave机器上打印相应的日志,分布式场景执行成功!

在Master机器上查看执行情况及聚合报告

六、no-gui分布式压测执行

-r  #启动远程服务器(在remote_hosts中定义)

jmeter -n -r -t 分类页.jmx -l ./jtl/result.jtl -e -o ./reports

-R, #启动这些远程服务器(覆盖remote_hosts)

jmeter -n -R 192.168.xx.xx:1098 -t 线程组.jmx -l ./jtl/result.jtl -e -o ./reports

输出./jtl/result.jtl文件

输出./reports测试报告

#仅执行生成jtl结果

jmeter -n -R 192.168.xx.xx:1098 -t 线程组.jmx -l ./jtl/result.jtl

#根据jtl文件生成html报告

jmeter -g ./jtl/result.jtl -o ./reports

不足之处,请指教,待补充!

Jmeter分布式 (三)的更多相关文章

  1. jmeter分布式操作-远程启动功能探索

    一.背景: 之前在Jmeter插件监控服务器性能一篇中说到,在非GUI环境中监控时为了保存监控数据需要修改jmeter脚本,并且每次通过施压机(远程服务器,非GUI环境)来压测时都要将jmeter脚本 ...

  2. jmeter分布式测试教程和远程的代理机无法连接网络的问题解决方法

    一.Jmeter分布式执行原理: 1.Jmeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent). 2.执行时,Controller会把脚本发送到每台A ...

  3. 转:Jmeter分布式测试

    在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能. 一.Jmeter分 ...

  4. Jmeter分布式部署测试-----远程连接多台电脑做压力性能测试

    在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需要模拟数以万计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起J ...

  5. Windows和Linux的Jmeter分布式集群压力测试

    Windows的Jmeter分布式集群压力测试 原文:https://blog.csdn.net/cyjs1988/article/details/80267475 在使用Jmeter进行性能测试时, ...

  6. Jmeter --- 分布式测试

    在使用Jmeter进行性能测试时,如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,这时可以使用Jmeter提供的分布式测试的功能. 一.Jmeter分 ...

  7. 【转】Jmeter分布式压力测试

    安装 下载地址:http://jmeter.apache.org/download_jmeter.cgi 安装前提(因为jmeter依赖于Java所以必须先配置好java) 下载后解压: tar -x ...

  8. Jmeter分布式测试实战

    一.Jmeter分布式测试基础 1.Jmeter分布式测试原因: 在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对负载机的CPU和内存消耗比较大.所以当需要模拟数以万计的并 ...

  9. 【转载】Jmeter分布式部署测试-----远程连接多台电脑做压力性能测试

    在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需要模拟数以万计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起J ...

  10. JMeter分布式测试环境搭建(禁用SSL)

    JMeter分布式环境,一台Master,一到多台Slave,Master和Slave可以是同一台机器. 前提条件: 所有机器,包括master和slave的机器: 1.运行相同版本的JMeter 2 ...

随机推荐

  1. (原创)一步步优化业务代码之——从数据库获取DataTable并绑定到List<Class>

    一,前言 现实业务当中,有一个很常见的流程:从数据库获取数据到DataTable,然后将DataTable绑定到实体类集合上,一般是List<Class>,代码写起来也简单:遍历+赋值就可 ...

  2. CLion远程调试嵌入式开发板程序

    CLion远程调试嵌入式开发板程序 目录 CLion远程调试嵌入式开发板程序 1. 目的 2. 前提条件 3. CLion设置 3.1 设置一个Deployment 3.2 上传需要的目录到目标板子 ...

  3. 全面分析 Vue 的 computed 和 watch 的区别

    一.computed介绍 computed 用来监控自己定义的变量,该变量在 data 内没有声明,直接在 computed 里面定义,页面上可直接使用. //基础使用 {{msg}} <inp ...

  4. 做PPT总是很难找到好看、有质感的图片,怎么办?

    1.制作PPT时,要想提升整体质感,就需要插入一些图片.当你进入到这个阶段,就意味着你剩下用来做PPT的时间,可能比较紧张了.所以,你的重中之重是,在最短的时间内找到合适的照片. 2.想快速找到好看. ...

  5. android web外壳

    参考: 1.https://blog.csdn.net/m0_37201243/article/details/106862817 2.https://www.cnblogs.com/ifaswind ...

  6. python3使用imaplib获取邮件

    imaplib 获取邮件,email解析邮件config文件中存有路径 1 # config.py 2 FILE_PATH_PREFIX = os.getcwd() + '/static/' 3 FI ...

  7. JPA基本用法

    jpa基本查询 1.继承JpaRepository,生成了CRUD方法 public void testBaseQuery() throws Exception {   User user=new U ...

  8. 面试必问:Java 垃圾回收机制

    摘要:垃圾回收机制是守护线程的最佳示例,因为它始终在后台运行. 本文分享自华为云社区<一文带你了解Java 中的垃圾回收机制>,作者:海拥. 介绍 在 C/C++ 中,程序员负责对象的创建 ...

  9. kubelet源码分析——启动Pod

    前文说到Kubelet启动时,调用到kubelet.Run方法,里面最核心的就是调用到kubelet.syncLoop.它是一个循环,这个循环里面有若干个检查和同步操作,其中一个是地在监听Pod的增删 ...

  10. EF Core Sequence contains no elements

    一.在.Net Core中使用Ef的聚合函数报错: 类似函数: 1,使用FirstOrDefault() 来代替 First() 2.使用SingleOrDefault 来代替 Single 3.使用 ...