性能测试总结(performance testing)(三)-- jmeter 分布式压测

1、分布式压测:多台机器向一个目标服务器进行压测。(单机器性能有限)
2、jmeter分布式压测原理:主机,肉鸡必须在同一个网段。
1.Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。
2. 执行时,master会把脚本发送到每台slave上,slave拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。
3. 执行完成后,slave会把结果回传给mastermaster会收集所有slave的信息并汇总。
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第1张图片

2、要求
主机和从机处于一个局域网内,master主机中jmeter.properties中修改文件,这里的主机也当作一个从机

remote_hosts=127.0.0.1:1888,9.9.15.192:1888
server_port=1888
server.rmi.localport = 1888

slave从机中修改:

remote_hosts=127.0.0.1
server_port=1888
server.rmi.localport=1888

主机从机同时启动jmeter-server.bat,主机启动jmeter.bat,启动jmeter服务,点击运行
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第2张图片

查看结果树,从机的信息会汇总到主机中查看,这里是没有详细信息:
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第3张图片


补充:阿里云开发接口
1、阿里云部署jdk环境
1、阿里云Centos服务器安装jdk环境,参考腾讯实验室:https://cloud.tencent.com/developer/labs/lab/10035

2、上传spring-boot文件到usr/local/app目录下,运行该文件:java -jar gs-spring-boot-0.1.0.jar
3、访问接口地址ip:8080/users,(注意阿里云需要到安全组打开TCP/8080端口)
4、上传apache-jmeter-4.0.tgz至服务器目录/usr/local/jmeter,解压tar zxvf apache-jmeter-4.0.tgz

2、jmeterGUI界面使用
1、操作指令:
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第4张图片

2、使用本地jmeter编写测试脚本(服务器三接口要开启,ip地址是外网或者内网ip),保存文件上传至/usr/local/jmeter/temp目录。
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第5张图片

3、切换到服务器中jmeterbin目录下,执行测试脚本,./jmeter -n -t /usr/local/jmeter/temp/user_info_api.jmx -l /usr/local/jmeter/temp/result.jtl

常用测试脚本命令
jmeter -n -t linux_users_api.jmx -l result.jtl -e -o /usr/local/softwate/jmeter/temp/ResultReport
jmeter -n -t /Users/jack/Desktop/linux_users_api.jmx -l result.jtl -e -o /Users/jack/Desktop/person/jmeter/temp

4、xftp下载结果报告result.jtl,在jmeter中新建一个summary report,浏览打开报告
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第6张图片

3、jmeter压测优化优化(-l 禁用已有的测试报告)

  1. 使用非GUI模式:jmeter -n -t test.jmx -l result.jtl
  2. 少使用Listener, 如果使用-l参数,它们都可以被删除或禁用。(禁用观察树)
  3. 在加载测试期间不要使用“查看结果树”或“查看结果”表监听器,只能在脚本阶段使用它们来调试脚本。
  4. 包含控制器在这里没有帮助,因为它将文件中的所有测试元素添加到测试计划中。
  5. 不要使用功能模式,使用CSV输出而不是XML
  6. 只保存你需要的数据,尽可能少地使用断言
  7. 如果测试需要大量数据,可以提前准备好测试数据放到数据文件中,以CSV Read方式读取。
  8. 用内网压测,减少其他带宽影响压测结果
  9. 如果压测大流量,尽量用多几个节点以非GUI模式向服务器施压
    官方推荐:http://jakarta.apache.org/jmeter/usermanual/best-practices.html#lean_mean

jmtere压测结果转换为Html报表(-l,生成对应报告地址,同时也是防止报错(禁用监听器))

jmeter -n -t /usr/local/software/jmeter/temp/linux_users_api.jmx -l /usr/local/software/jmeter/temp/jtl/result.jtl -e -o /usr/local/software/jmeter/temp/result

1、做8万次,查看报告
这里写图片描述
得到一个html报告,下载到本地后打开,首先表格里面可以看到
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第7张图片
其中详细数据意义:

            lable:sampler采样器名称          
            Average:平均响应时间
            Min:最小响应时间
            Max:最大响应时间
            90th pct: 90%的用户响应时间不会超过这个值(关注这个就可以了)
            2ms,3ms,4,5,2,6,8,3,9
            95th pct: 95%的用户响应时间不会超过这个值
            99th pct: 99%的用户响应时间不会超过这个值 (存在极端值)
            throughtput:Request per Second吞吐量 qps
            received:每秒从服务器接收的数据量
            send:每秒发送的数据量

报表里面可以看到:

1、Over Time(随着时间的变化)
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第8张图片

*Response Times Over Time:响应时间变化趋势
*Response Time Percentiles Over Time (successful responses):最大,最小,平均,用户响应时间分布
* Active Threads Over Time:并发用户数趋势
* Bytes Throughput Over Time:每秒接收和请求字节数变化,蓝色表示发送,黄色表示接受
*Latencies Over Time:平均响应延时趋势
* Connect Time Over Time:连接耗时趋势
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第9张图片

2、Throughput(吞吐量)
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第10张图片

  • Hits Per Second (excluding embedded resources):每秒点击次数
    *Codes Per Second (excluding embedded resources):每秒状态码数量
  • Transactions Per Second:即TPS,每秒事务数
  • Response Time Vs Request:响应时间和请求数对比
  • Latency Vs Request:延迟时间和请求数对比

3、Response Times(响应时间)
性能测试总结(performance testing)(三)-- jmeter 分布式压测_第11张图片

*Response Time Percentiles:响应时间百分比
* Response Time Overview:响应时间概述
* Time Vs Threads:活跃线程数和响应时间
* Response Time Distribution:响应时间分布图

你可能感兴趣的:(jmeter)