Jmeter学习笔记[3]

Jmeter学习笔记[3]

十一月 21, 2019

Jmeter分布式压测基础知识

分布式压测介绍

看一下分布式压测与普通压测的区别:

  • 普通压测:单台机器对目标机器进行施加压力测试,但是其产生的压力比较小,受控因素比较多,包括设备的硬件性能,CPU,网络,IO等。
  • 分布式压测:利用多台机器想目标机器进行压力测试,这种压测方式可模拟的用户数更多,量级也更大。

Jmeter分布式压测原理

把总控制器叫做master,其他产生压力的机器叫做server,上图创建了三个server,当使用Jmeter进行分布式压测的时候,有三个过程:

1.Jmeter会通过master把压测脚本发送到每个server上。

2.每个server端在执行脚本的时候不用启动Jmeter,只需要把jmeter-server打开就可以了。

3.执行结束后,server端会把压测数据传回到master,然后master汇总输入报告。

这就是分布式压测的整个过程,另外有几个地方需要配置一下:

server端:在server机器上,找到bin目录下的jmeter.properties文件,打开文件进行修改,找到server.rmi.ssl.disable字段,默认设置是false的,这里改成true,然后再找到remote_hosts设置,给IP后面添加一个端口。然后将server端的IP和端口记录下来,server端就设置完了。

master端:在master机器上,同样式在jmeter.properties文件里进行设置,server.rmi.ssl.disable同样设置为true,只不过在remote_hosts设置中,里面的IP填写的是server端几台机器的IP地址及端口号,这样才可以控制。

另外,必须要保证master和server需要处于同一网段下才能进行控制。

Jmeter非GUI界面参数讲解

官方配置文件地址 http://jmeter.apache.org/usermanual/get-started.html

非GUI界面,压测参数讲解:
-h 帮助
-n 非GUI模式
-t 指定要运行的 JMeter 测试脚本文件
-l 记录结果的文件 每次运行之前,(要确保之前没有运行过,即xxx.jtl不存在,不然报错)
-r Jmter.properties文件中指定的所有远程服务器
-e 在脚本运行结束后生成html报告
-o 用于存放html报告的目录(目录要为空,不然报错)

示例:

1
jmeter -n -t /Users/jack/Desktop/linux_users_api.jmx -l result.jtl -e -o /Users/jack/Desktop/person/jmeter/temp

如果你的sever端是Linux,你的master端是Mac的话,推荐一个比较好用的传输文件的软件:FileZila(亲测好用)

上述示例到出了result.jtl文件,这个可以通过jmeter新建线程组–>summary report–>浏览到这个文件来查看,生成的html文件可以通过浏览器来查看。

关于Jmeter测试的性能优化

讲解Jmeter压测减少资源使用的一些建议,即压测结果更准确

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模式向服务器施压

Jmeter压测生成多维度图形化HTML测试报告

在进行压测指令的时候,使用-e -o指令可以输出html报告。

Jmeter输出HTML报告里面Dashboard的核心指标

输的HTML有两栏,分别是Dashboard和Charts,我们先来看看Dashboard界面

上图是模拟了一个Mysql数据库压测的HTML输出报告。

1、Test and Report informations

Source file:jtl文件名

Start Time :压测开始时间

End Time :压测结束时间

Filter for display:过滤器

2、APDEX(Application Performance Index)

apdex:应用程序性能指标,范围在0~1之间,1表示达到所有用户均满意

T(Toleration threshold):可接受阀值

F(Frustration threshold):失败阀值

Lable:sampler采样器名称

3、Request Summary

OK:成功率

KO:失败率

4、Statistics

Lable:sampler采样器名称

samples:请求总数,并发数*循环次数

KO:失败次数

Error%:失败率

Average:平均响应时间

Min:最小响应时间

Max:最大响应时间

90th pct:90%的用户响应时间不会超过这个值(关注这个就可以了)

95th pct:95%的用户响应时间不会超过这个值

99th pct::99%的用户响应时间不会超过这个值 (存在极端值)

throughtput:Request per Second吞吐量 qps

received:每秒从服务器接收的数据量

send:每秒发送的数据量

5、Error

Type of error:错误类型

Number of errors:错误数

% in errors:占错误总数的百分比

% in all samples:占总线程数的百分比

6、Top 5 errors by sampler

错误数排名前五的错误会列举出来

Jmeter输出HTML报告里面Charts的报表讲解

1、Over Time(随着时间的变化)

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:连接耗时趋势

2、Throughput

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

Response Time Percentiles:响应时间百分比

Response Time Overview:响应时间概述

Time Vs Threads:活跃线程数和响应时间

Response Time Distribution:响应时间分布图

系统架构图以及需要考量的问题

以上就是这次jmeter的学习笔记。