zoukankan      html  css  js  c++  java
  • JMeter在linux上分布式压测步骤(二)

    哈喽,我又来了~

    前提:三台l机器,

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

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

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

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

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

    一、master端(windows端)

    1、修改1099端口,jmeter代理机和控制机通信的端口,可以不修改,默认就是1099,1099是master和slave的通信端口

    2、打开jmeter的配置文件后,查找remote_hosts,然后修改为执行机的ip,中间用逗号,隔开。

    写上两个slave机的ip,这里写执行机slave的ip和端口,可以写多个。

    3、启动jmeter-server

    (这里启动的时候可以看到ip后面的端口不是1099,这里不用管,1099是master和slave的通信端口,和这个没有关系)

    二、slave端:配置slave

    1、进入到jmeter的bin目录下,打开jmeter.properties

          cd  /opt/apache-jmeter-5.1.1/bin 

           vi   jmeter.properties

    可能会遇到打不开的权限问题:

    这里使用:chmod 777 filename  ,然后再重新就可以打开了。

    在vi命令下使用 /find,   find代表你想要查找的字符串。

    2、slave(执行机)上的配置:多个slave机的话,则都要这样配置

    (1)查找到并取消这段配置的注释 server.rmi.ssl.disable=false ,false改成true。

    (2). 输入命令:jmeter-server -Djava.rmi.server.hostname=10.0.1.120 ,启动 anget 节点。jmeter-server 后面的参数指定 agent 的 IP

    这里是启动slave上的jmeter服务。如下图出现则启动成功。(这里和windows里点击启动jmeter-server.bat一样)

     

     三、开始压测

    多台压测机器分布式压测:

    1、三台机器都要安装相同版本Jmeter,尽量保证安装路径一致;

    2、在三台Jmeter机器上放置同样的jmx脚本,脚本的聚合报告中,设置结果写入文件路径:

    /usr/local/apache-jmeter-5.1.1/jmx/logs/createOrderResult${__time(YMD)}${__time(HMS)}.jtl

    会将压测执行结果放入到/usr/local/apache-jmeter-5.1.1/jmx/logs目录下,并自动生成带有日期时间戳的jtl文件。

    这里生成聚合报告的路径根据自己情况而写。

    四、运行脚本

     运行命令: jmeter -n -t test.jmx -R 10.1.44.122,10.1.44.123 -l test.jtl  或  jmeter -n -t test.jmx -r -l test.jtl

                           参数 n:非gui运行

                                   t:指定测试脚本 

                                   R:指定多少个 agent 启动并参与测试

                                   r: 代表全部 agent 启动并参与测试

                                   l:生成测试结果文件     

    【同时生成测试报告命令】

    ./jmeter -n -t 压力测试.jmx -r -l results.jtl -e -o /tmp/ResultReport

    -e :在脚本运行结束后生成html报告 
    -o :用于存放html报告的目录 
     

    这里的需要进入到该该脚本的目录,执行该命令,才可以直接写上面的test.jmx,否则就要写上绝对路径。

    后面test.jtl聚合报告,也可以指定任意保存的路径,前提是不要有文件名和它重复。

    出现的坑!!!!!

    (1)启动jmeter-server服务时,找不到文件

    原因:自JMeter 4.0以来,RMI的默认传输机制将使用SSL,SSL需要密钥和证书才能工作

    解决办法:

    方式1、将jmeter.properties的ssl.disable改成true(不进行文件校验)和上面的一样。

    方式2、如果slave机在Linux机上,就运行create-rmi-keystore.sh文件;如果是slave机在window上,就运行create-rmi-keystore.bat文件

        运行后,自行填写相关信息

       运行后,bin目录下会多出一个rmi_keystore.jks文件

        这个文件拷贝到想要运行的slave机上,就不用方法1就可以,就是个文件校验的问题

     (2)提示slave机器繁忙

  • 相关阅读:
    web基础(Myeclipse、IDEA新建Servlet工程)
    web基础(myeclipse新建web工程、tomcat服务器)
    http协议(http请求、响应、抓包、get和post请求)
    jsp(简介、脚本和注释、运行原理)
    类与对象(类、对象、对象的比较)
    变量(成员变量、局部变量)、堆栈
    目录的基本操作
    目录切换命令
    数组(一维数组、二维数组、与数组相关的函数)
    流程控制(顺序结构、条件语句、选择语句、循环语句)
  • 原文地址:https://www.cnblogs.com/wuzm/p/10877974.html
Copyright © 2011-2022 走看看