一、安装部署
依赖:Java
 windows安装
 1.配置环境变量:新建JMETER_HOME系统环境变量,值设置为Jmeter的安装路径,
 D:\Program Files (x86)\Jemter\apache-jmeter
 2.运行Jemeter:安装路径下,双击bin目录下的jmeter.bat,打开界面
Linux安装
 1.上传jmeter包到服务器上:apache-jmeter-5.3.tgz
 2.解压到当前传的目录:jmeter
 tar zxvf apache-jmeter-4.0.tgz jmeter
 3.然后把解压的文件配置到对应的环境变量:
 export JMETER_HOME=/root/jmeter
 export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
 export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin
 4.source /etc/profile 目的让配置文件生效
 5.[root@yace01 ~]# jmeter -v
 6.创建路径 /opt/wlei/jmeter/test/并执行监控
 nohup sar -u 10 >>/opt/wlei/jmeter/test/cpu.log &
 nohup iostat -x 10 -t>>/opt/wlei/jmeter/test/io.log &
 nohup sar -n DEV 10  >>/opt/wlei/jmeter/test/net.log &
 注意:yum install sysstat #安装sar命令
二、Jmeter脚本
使用Jmeter做http脚本,基本分为5个步骤
 1、添加线程组
 TestPlan右击-》添加Thread Group
 2、添加http请求
 Thread Group右击-》添加HTTP Request
 3、在http请求中写入接口url、消息头和消息体、请求方式和参数
 例如:PATH中填   ${__StringFromFile(E:\jmeter\rongqidel\data.txt,,,)}
 4、添加断言及查看结果树
 (1)响应断言:对Web请求的响应结果进行验证
            鼠标右击http请求->添加->断言->Response Assertion
            对接口返回信息可实现”包括、匹配、相同、或等方式校验
 (2)Duration Assertion断言:对响应时间进行验证
            鼠标右击http请求->添加->断言-> Duration Assertion
            对响应时间进行ms级的验证
 (3)Size Assertion断言:对响应报文包含字节数进行验证
            鼠标右击http请求->添加->断言-> Size Assertion
            是否包含正确数量的byte。可定义(=, !=, >, <, >=, <=)
 (4)对断言结果进行验证可添加监控器
        鼠标右击http请求->添加->监控器->断言结果
 View Results Tree查看结果树
 Summary Report汇总报告
 Aggregate Report聚合报告
 5.修改jmx文件并执行压测
 jmeter -n -t rongqi-del-100cc.jmx -l rongqi-del-100cc.jtl
 导出jtl文件到windows机器可视化加载,得出tps和响应时延
 6.查看结果树获取测试结果
三、多机连跑
使用jmeter-linux负载机,windows主控机的配置
 1.肉鸡配置及启动
 (1)bin/jmeter文件修改堆载信息
 HEAP="-Xms10G -Xmx10G"
 (2)bin/jmeter-server文件添加主机(去注释)
 RMI_HOST_DEF=-Djava.rmi.server.hostname=肉鸡自己IP(主)
 (3)bin/jmeter.properties文件修改
 remote_hosts=10.19.232.17(主机),127.0.0.1
 server.rmi.create=true 
 server.rmi.ssl.disable=true
 (4)启动负载机
 cd /opt/apache-jmeter-3.1/bin/
 ./jmeter-server -Djava.rmi.server.hostname=192.168.6.6(负载机自己IP)
修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%
 2.主控机添加要使用的负载机
 新增需要监控的IP和端口,IP就是负载机的IP,端口默认为1099
 remote_hosts=localhost:1099,192.168.6.6:1099
 server.rmi.ssl.disable=true
 3.主机上启动负载机
 Run-》Remote start
 当负载机中出现finished,表明运行结束
4.默认情况下,负载机是只会将一些特定的数据反馈给控制机的,通常不会包含服务器的响应。
 则需要修改以下配置(包括控制机和负载机)。
 jmeter.save.saveservice.output_format=xml
 jmeter.save.saveservice.response_data.on_error=true
 #Remote batching support
 mode=Standard
5.第三方文件(参数文件),需要人为的复制分发到负载机。脚本中的访问路径:
 ·如果控制机和负载机的操作系统类型一致,则建议使用绝对路径。
 ·如果控制机和负载机的操作系统类型不一致,则只能使用相对路径。
 ·在本地(控制机上),当前路径是脚本所在路径。
 ·在远程(负载机上),当前路径是Jmeter的bin目录所在路径。
 联机负载时,要保证控制机和负载机的Jmeter的版本、JAVA环境的一致性。
 联机负载时,脚本的运行环境是负载机的环境。
四、Jmeter脚本中的测试计划
 1、独立运行每个线程组:用于控制测试计划中的多个线程组的执行顺序。
                  未勾选:有多个线程组时,其随机启动执行;
             勾选:多个线程组时,等待前一个线程组执行完成后才开始下一个线程组 ;
        补充说明:线程组中的取样器的执行顺序:默认是从上到下执行。交替控制器、随机控制器、随机顺序控制器和循环控制器等可以改变取样器的执行顺序。
 2、主线程结束后运行tearDown线程组:
   当线程组停止运行时仍继续运行tearDown线程组,该选项结合线程组(在取样器执行错误后要执行的动作)的执行配置使用。
 3、函数测试模式:只有当你需要记录每个请求从服务器取得的数据到文件时才需要选择函数测试模式。选择这个选项很影响性能。在调试脚本的时候,可以开启,但是在压测数量时建议关闭。
 4.添加目录或jar包到ClassPath:
   添加文件或jar包,此功能最常用于调用外部jar包。当脚本需要调用外部的java文件或jar包时,可以把jar包路径添加到这里,然后在beanshell中直接import进来,并调用jar包中的方法。
五、Jmeter中的线程组
same user on each interation就是选择每次运行是是否使用同一个cookie
 【选中】是 用同一个 也就是每次循环都是同一个用户
 【不选中】不需要 每次循环都用新的cookie 也就是每次循环都是新的用户
延迟创建线程直到需要
ramp up的值应该是启动全部线程所需的时间
六、Jmeter中计数器使用
Number format:格式
   (1、不填写时,会采用数字模式,如:001,设置为1
   (2、如果需要特定的格式,需要手动配置,如:想获取00001,就需要配置为:00000
 与每用户独立的跟踪计数器:
   (1、默认不勾选,标识全局计数,表示每一个线程/循环每次获取不同的值。
   (2、如果勾选,表示每一个线程的相同循环时都是用的同一个值;
         <boolProp name="CounterConfig.per_user"></boolProp>
 reset counter on each thread group iteration:
   只有在勾选每用户独立,才可以设置。
         如果勾选,则每次线程循环都会重置计数器的值,每次线程组迭代,都会重置计数器的值,当线程组是在一个循环控制器内时比较有用
         <boolProp name="CounterConfig.reset_on_tg_iteration"></boolProp>
在同一个线程组中调用多次或者循环调用该变量,该变量的值都是固定的,进入其他线程组后才增加的