zoukankan      html  css  js  c++  java
  • jmeter分布式压测(三)

    一,Jmeter分布式部署测试--远程连接多台电脑做性能测试

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

      在使用Jmeter进行接口的性能测试时候,由于JMeter是java应用,对CPU和内存消耗比较大,所以当需要模拟数以万计的并发用户时,使用单台机器模拟所有的并发用户就会出现电脑卡死等现象,或者会引起java内存溢出的错误。为了Jmeter工具提供了更大的负载能力,这个时候就可以使用Jmeter提供分布式来控制多台电脑进行压力测试 

    二,分布式的原理

      1,jmeter分布式测试时,选择其中一台为控制机(Controller),一般都是我们自己的电脑,其他机器作为代理机器(Agent),一般可以用服务器做代理

      2,执行时,Controller会把脚本发送到每台Agent上,Agent拿到脚本后开始执行,Agent执行时不需要启动jmeter,只需要把jmete-server文件打开就行,他是通过命令行来执行的

      3,执行后,Agent会把结果回传给Controller,Controller会收集所有Agent的信息并汇总

      其他的原理解释:

    1. 选择其中一台作为Master机(调度机),其他机器作为Slave机(执行机)
    2. 执行时,Master机会把脚本发送到每台Slave机上,Slave机拿到脚本后就开始执行,不需要启动GUI
    3. 执行完成后,Slave机会把结果回传给Master机,Master机会收集所有Slave机的信息,并汇总

      

    三、分布式配置

      前提条件:

    • Slave机器的jdk版本需要跟Master机器的jdk版本保持一致
    • Slave机器的Jmeter版本以及插件需要跟Master机器保持一致,操作方法是直接将Master的Jmeter安装目录打包后解压到Slave机器上
    • Slave机器的网络需要跟Master机器的网络保持在同一个局域网,可以ping通

      1.Master机器配置

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

      

       第一个ip是本地的ip,第二个ip是slave机器上的ip

      配置完成后重启Jmeter  

      2.Slave机器配置

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

      

      如果是linux机器上,则要给bin目录赋予执行的权限:chmod +x -R bin/,还要注意防火前是否开放了1099端口

      3,启动salve的jmeter,   ./jmeter-server

      

       解决办法:./jmeter-server -Djava.rmi.server.hostname=192.168.3.180(这是我的ip)

      提示缺少jsk文件

      

      不管是负载机还是控制机(如果控制机也作为负载机),执行jmeter-server.bat(linux下执行jmeter-server,另外:linux下检查是否启动成功:ps -ef | grep jmeter-server),报错,

      是因为从JMeter 4.0开始,RMI的默认传输机制将使用ssl。SSL需要密钥和证书才能工作,不使用ssl将存在安全漏洞

      解决办法:在控制机bin目录下,点击:create-rmi-keystore.bat

      

      根据提示一直填下去,遇到Yes与No就直接填y,然后回车就ok了

      回车后会在bin目录生成文件:rmi_keystore.jks

      

      点击:点击jmeter-server.bat, 启动RMI注册表

      复制控制机生成的rmi_keystore.jks到每一台负载机jmeter的bin目录下

      再次启动就正常了:

      ./jmeter-server -Djava.rmi.server.hostname=192.168.3.180(这是我的ip)

    四,运行

      在控制机查看是否配置成功,需要查重新启动jmeter

      

      我就只使用了一个savle(192.168.3.180)

      

       启动以后从slave上可以看到两行日志:

      

      注意:如果客户端提示找不到系统文件之类的或者提示java.rmi.ConnectIOException: non-JRMP server at remote endpoint,就需要在master和salve的jmete.properies中打开找到#server.rmi.ssl.disable=false,给变更成server.rmi.ssl.disable=true(注意是控制器和压力机都要更改)。每次变更后都要重新打开jmeter

       我本地的机器没有作为负载机,所有没有消耗任何的资源

      这里要注意的是:

      1,控制机和负载机的jdk,jmeter版本都必须一致

      2,控制机用的插件,负载机上也必须有(可以去ext目录下对比)

      3,脚本不需要传递到负载机,但是如果有csv等数据文件,就必须传到负载机上,而且路径要写负载机的路径

      4,负载机只能是一种,要么是windowins要么是liunx,我这里是linux

  • 相关阅读:
    两个Stirng[]拼接成一个数组
    Visual code 常用快捷键
    mysql 中的分页limit
    移动端web轮播图插件swiper,功能很强大
    array_splice()函数 ,删除数组中的某个值
    Github简单的上传和修改
    PHP数组在循环的时候修改本身的值
    IP定位,天气接口
    使用百度翻译的API接口
    laravel 队列
  • 原文地址:https://www.cnblogs.com/hally/p/12667480.html
Copyright © 2011-2022 走看看