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 响应断言
响应断言一般与结果树配合使用,因为结果树只返回网络层的成功与失败,并不会校验返回报文具体参数是否正常,响应断言可以对报文返回结果做校验,进而反映到结果树中。比如:假定返回报文中必须包含<erorcd>0000</>字符,即交易状态码为0000才认为交易成功,那可按下图配置:
配置完成后,在压测过程中,如果返回报文不包含<erorcd>0000</>,交易会以失败形式体现在结果树中。
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分钟为例
- 将组件jar包放入jemeter安装目录lib包。
- 双击bin目录的jmeter.bat启动软件。
- 修改软件语言为中文
- 添加定量线程组
- 设置定量线程组线程量为20。持续时间300(5分钟)秒
- 添加TCP取样器
- 设置取样器参数,设置ip 端口,设置报文
- 添加结果树
- 添加响应断言,设置检测字符串
10.添加监听tps监听与线程数监听
- 添加服务器环境资源监听
- 配置服务器环境监听
这里以监听CPU为例,其它监控类似,这里不再赘述
配置结束后,需要在服务器启动监控控件,jmeter才能实时获取服务器动态信息。
登陆要监控的服务器,上传ServerAgent
- 进入该目录执行./startAgent.sh。如果要不中断命令使用nohup ./startAgent.sh > /dev/null 2>&1
- 启动成功后如图(如果启动不成功,检查4444端口是否被占用)
将要监控的服务器startAgent启动完毕后,返回jmeter。
在要启动的线程组右键,保证该线程组处于启用状态(启用按钮置灰,说明目前在启用状态),同时将其他线程组禁用。
- 开始启动压测
20.等待结束分析数据即可
1.3 Linux环境压测步骤
- 将Jmeter 拷贝到服务器
将压测案例 以 .jmx结尾的文件拷贝到bin目录下
进入Jmeter目录,给/bin目录 加权限
chmod –R 777 bin/
- 进入bin目录 执行命令
sh jmeter.sh -n -t dc1000.jmx -l report.jtl 注:dc1000.jmx 以你实际案例名为主
- 等待压测完成
完成后会在bin目录下生成一个report.jtl
- 将 report.jtl 导出到本地,打开本地jmeter,打开测试案例,分别点击聚合报告、汇总报告、查看结果树,将 report.jtl 导入测试案例。
- 导入后即可查看压测结果。
1.4 总结
本文主要介绍了jemeter常用组件的使用方法以及在windows环境和linux环境的压测步骤,希望对你有所帮助,如果你觉得有用的话,不妨点赞收藏一下。
版权归原作者 M_Taster 所有, 如有侵权,请联系我们删除。