1.1 常用组件以及参数介绍
1.1.1 基本软件
需准备一下工具
压测工具: jmeter-2.13
服务器性能监控:jmeter插件 ServerAgent-2.2.1
压测时,直接使用jmeter模拟终端发起交易,jmeter可统计交易并发;ServerAgent在服务器启动agent,开放4444端口,jmeter通过agent获取相关的服务器性能数据,包括CPU,内存,网络IO,磁盘IO等。另外,常用的组件可能还需要额外下载,比如阶梯压测jar包JMeterPlugins-Standard.jar,tps监控jar包cmdrunner-2.3.jar,jmeter-plugins-cmn-jmeter-0.7.jar,json-lib-2.4-jdk15.jar等。下载完成后需要放置到jemeter安装目录/lib下才可以生效。
1.1.2 基本线程组
基本线程组是压测的基本单元的集合,一个线程组可以下放多个组件,见下图
基本线程组只允许进行定量线程压测,其中:
线程数:表示线程组在运行之后线程最终开启的数量,也可以理解为同时多少个用户并发发起交易。
Ramp-up时间(秒):表示经历多长时间拉起所有线程。如果配置0,那么表示在压测开始后瞬间启动所有线程,通常不建议配置0,因为如果配置的线程数很大且时间配置0的话,对系统冲击较大,建议配置几秒的缓冲时间。
循环次数:表示在每个线程交易发送的次数。如果线程数配置20,循环次数配置2。那么表示总发送交易量为20*2=40。
永远:勾选该选项,表示交易不停止,一直循环发送。
持续时间(秒):表示交易发送持续的时间,到点停止。
1.1.3 阶梯压测线程组
阶梯压测线程组,可以自动化的持续加压,适合压测出当前系统可以承载的最大并发,以及最高tps,配置选项见下图:
this group will start:表示总共要启动的线程数;若设置为 100,表示总共会加载到 100 个线程
first,wait for:从运行之后多长时间开始启动线程;若设置为 0 秒,表示运行之后立即启动线程
then start:初次启动多少个线程;若设置为 0 个,表示初次不启动线程
next add:之后每次启动多少个线程;若设置为 10个,表示每个梯次启动 10 个线程
threads every:当前运行多长时间后再次启动线程,即每一次线程启动完成之后的持续时间;若设置为 30 秒,每梯次启动完线程之后再运行 30 秒
using ramp-up:启动线程的时间;若设置为 5 秒,表示每次启动线程都持续 5 秒(和基础线程组的ramp-up一样意思)
then hold load for:线程全部启动完之后持续运行多长时间,如果设置为 60 秒,表示 100 个线程全部启动完之后再持续运行 60 秒
finally,stop/threads every:多长时间释放多少个线程;若设置为 5 个和 1 秒,表示持续负载结束之后每 1 秒钟释放 5 个线程
1.1.4 HTTP请求
交易http协议的发送端,与常规接口调试基本一致,这里不再赘述。
消息体数据:通常为json报文。
1.1.5 TCP取样器
交易发送Tcp协议的发送端,报文格式通常但不限于xml报文。
注意:Re-use connection表示长连接,务必根据实际情况选择。选错可能会导致交易大规模失败的情况发生。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
1.1.6 查看结果树
用来实时追踪交易是否成功的监视器。绿色表示成功,红色表示失败。
1.1.7 响应断言
响应断言一般与结果树配合使用,因为结果树只返回网络层的成功与失败,并不会校验返回报文具体参数是否正常,响应断言可以对报文返回结果做校验,进而反映到结果树中。比如:假定返回报文中必须包含
配置完成后,在压测过程中,如果返回报文不包含
1.1.8 聚合报告
用来体现当前压测交易的耗时,样本数,异常量,吞吐量等。
1.1.9 汇总报告
汇总报告数据与聚合报告类似,多出一个标准差,标准差数值越低表示系统越稳定。两个报告的吞吐量均表示tps。
1.1.10 Transactions per Second
tps实时统计监控,用来体现压测过程中tps变化的走势图,下图可知系统在稳定后,tps在280-320浮动。
1.1.11 Active Threads Over Time
线程量实时统计走势图,下图可知,当前线程组在进行阶梯压测,因为线程数在稳定上升。
1.1.12 PerfMon Metrics Collector
服务器资源监控组件,功能极其强大,可以同时监控不同服务器的性能数据,包括CPU,内存,网络IO,磁盘IO等。
其中Host/IP配置你要监控的服务器地址,端口默认4444,Metric to collect配置如下:
1.1.13 变量定义组件
通过定义变量名,可以在软件内部全域使用,调用方式${参数名}。例如
1.1.14 CSV数据格式组件
当用户需使用大量个人自定义数据时。需自定义数据文件,然后通过CSV数据组件引用。这里以用户身份证号举例。文件名如下图以.csv格式结尾。
文件内容如下图,如果需要多种类型数据,请逐行用逗号分隔。
数据文件准备好后,使用CSV数据格式组件引用
软件内部同样使用${变量名}调用,如下图
1.1.15 吞吐量控制器
用于分发交易量,一般配合线程组使用。
吞吐量设置选Total Executions以个数计算,选percent Executions则以百分比来算的,设置80即总线程数的80%
1.2 Windows环境压测步骤
这里以定量线程20压测5分钟为例
1. 将组件jar包放入jemeter安装目录lib包。
2. 双击bin目录的jmeter.bat启动软件。
3. 修改软件语言为中文
4. 添加定量线程组
5. 设置定量线程组线程量为20。持续时间300(5分钟)秒
6. 添加TCP取样器
7. 设置取样器参数,设置ip 端口,设置报文
8. 添加结果树
9. 添加响应断言,设置检测字符串
10.添加监听tps监听与线程数监听
11. 添加服务器环境资源监听
12. 配置服务器环境监听
这里以监听CPU为例,其它监控类似,这里不再赘述
13. 配置结束后,需要在服务器启动监控控件,jmeter才能实时获取服务器动态信息。
14. 登陆要监控的服务器,上传ServerAgent
15. 进入该目录执行./startAgent.sh。如果要不中断命令使用nohup ./startAgent.sh > /dev/null 2>&1
16. 启动成功后如图(如果启动不成功,检查4444端口是否被占用)
17. 将要监控的服务器startAgent启动完毕后,返回jmeter。
18. 在要启动的线程组右键,保证该线程组处于启用状态(启用按钮置灰,说明目前在启用状态),同时将其他线程组禁用。
19. 开始启动压测
20.等待结束分析数据即可
1.3 Linux环境压测步骤
1. 将Jmeter 拷贝到服务器
2. 将压测案例 以 .jmx结尾的文件拷贝到bin目录下
3. 进入Jmeter目录,给/bin目录 加权限
chmod –R 777 bin/
4. 进入bin目录 执行命令
sh jmeter.sh -n -t dc1000.jmx -l report.jtl 注:dc1000.jmx 以你实际案例名为主
5. 等待压测完成
完成后会在bin目录下生成一个report.jtl
6. 将 report.jtl 导出到本地,打开本地jmeter,打开测试案例,分别点击聚合报告、汇总报告、查看结果树,将 report.jtl 导入测试案例。
7. 导入后即可查看压测结果。
1.4 总结
本文主要介绍了jemeter常用组件的使用方法以及在windows环境和linux环境的压测步骤,希望对你有所帮助,如果你觉得有用的话,不妨点赞收藏一下。