Jemter 压测基础(一)——基本概念、JMeter安装使用、分布式测试、导出测试结果、编写测试报告
Jemter 压测基础(一)
1.压力测试的基本概念:
1.吞吐率(Requestspersecond)
服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。计算公式:总请求数/处理完成这些请求数所花费的时间,即Requestpersecond=Completerequests/Timetakenfortests
2.并发连接数(Thenumberofconcurrentconnections)
某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
3.并发用户数(Thenumberofconcurrentusers,ConcurrencyLevel)
注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,即连接数。
4.用户平均请求等待时间(Timeperrequest)
计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即Timeperrequest=Timetakenfortests/(Completerequests/ConcurrencyLevel)
5.服务器平均请求等待时间(Timeperrequest:acrossallconcurrentrequests)
计算公式:处理完成所有请求数所花费的时间/总请求数,即Timetakenfor/testsCompleterequests可以看到,它是吞吐率的倒数。同时,它也=用户平均请求等待时间/并发用户数,即 Timeperrequest/ConcurrencyLevel
2.安装打开Jemeter,添加测试计划等
地址:http://jmeter.apache.org/download_jmeter.cgi
1】运行安装目录中的bin/jmeter.bat
2】新建testplan
3】添加 thread group
Number of Threads (Users) 线程数:发送请求的总次数
Ramp-up Period(in seconds):Jmeter达到指定最大线程数的时间
Loop Count :循环次数,Forever,线程组中的线程将不间断的连续测试系统
调度器:主要用来指定该测试的一些时间信息,比如从几点到几点运行测试,如果到了指定时间测试没有进行完成,测试也会被停止。
4】添加请求:sampler——》HTTP request
填写:服务器IP、port、接口URL、请求方法、请求参数(POST请求参数只支持Body Data,不支持Parameters)
5】添加HTTP Header Manager:config element——》HTTP Header Manager
1)config element 配置单元:和Sample组件一起工作,主要用来配置Sample如何来发起请求访问服务器,特点是可以把一些Sample的共同配置放在一个元素里面方便管理,配置单元是有作用域的。作用域和树的那个关系一样越是上级节点的作用域越大,越是接近叶子节点的作用域就越小,可以复写上级作用域的配置。
2)填写请求头信息:尽量使用fiddler抓包 获取
3)Accept (Accept填写不正确,会报错406)
X-Requested-With
Content-Type 等
6】添加监听
例如:
Summary Report:listener——》Summary Report
View Results Tree:listener——》View Results Tree
常用监听:
1)断言结果
2)查看结果树
3)聚合报告
4)用表格查看结果
5)图形结果
6)aggregate graph
7】JMeter安装PerfMon插件
PerfMon用来监控Server的CPU、I/O、Memory等情况。
1) 插件下载地址:http://code.google.com/p/jmeter-plugins/wiki/PerfMon
2)把JMeterPlugins.jar放到jmeter客户端的jmeter/lib/ext下。
3)启动jmeter,添加Listener时你就看到PerfMon Metrics Collectors了。
4)另外还需要把下载下来的PerfMon解压后放到所有的被测试的服务器上,并运JMeterPlugins/serverAgent/startAgent.sh,默认工作在4444端口。
5) 使用PerfMon截图:

在非GUI模式下运行Jmeter时指定把result保存到一个文件,非常必要
3.远程启动jmeter(分布式性能测试)
JMeter是由Java开发的,比较耗内存、占CPU,所以在大并发下还是需要分布式
应用进场景:用一台机器 Controller(称为JMeter客户端)上的jmeter同时启动另外几台机器 Agent(称为JMeter远程服务器)上的jmeter。
1)保证jmeter客户端和jmeter远程服务器采用相同版本的jmeter和JDK,并配置环境变量。
2)jmeter客户端和jmeter远程服务器最好在同一个网段内。
3)在jmeter远程服务器上运行JMETER_HOME/bin/jmeter-server (Linux/UNIX)或者JMETER_HOME/bin/jmeter-server.bat(Windows);在console上可以看到对应机器的IP以及port;
4)在jmeter客户端上修改/bin/jmeter.properties文件,找到属性"remote_hosts",使用JMeter远程服务器的IP地址作为其属性值。可以添加多个服务器的IP地址,以逗号作为分隔;port有可能会不同,但一般情况下是相同的
如果配置了Controller的IP那么会将controller机器也作为一台压力机
#remote_hosts=127.0.0.1
remote_hosts=9.115.210.2:1099,9.115.210.3:1099,9.115.210.4:1099
# RMI port to be used by the server (must start rmiregistry with same port)
server_port=1099
5) 在jmeter客户端上启动jmeter:
启动controller的JMeter,进入JMeter GUI页面,选择菜单“运行”——》“远程启动”,分别启动agent,也可以直接选择“远程全部启动”启动所有agent的JMeter
注意点
1.尽量关闭防火墙
2.确定在controller机器上安装jdk,版本和JMeter一致(兼容行)
3.Agent机器启动 JMeter_server时,后台提示:"could not find ApacheJmeter_core.jar"
解决办法:添加环境变量JMETER_HOME,路径为bin目录的上一级
4.JMeter分布式控制过程中,各个Agent启动的线程数等于线程组中的配置
4.导出运行结果
JMeter中,结果需要存放在.jtl文件。在下图红色区域填写你需要要保存的位置以及文件名称,例如: D:/testReuslt.jtl

.jtl文件可以提供多中格式的编写,一般我们都是将其以CSV文件格式记录。

进入JMeter后,选择某个监听器,点击页面中的configure按钮。设置界面,可以勾选Save Field Names(CSV),Save Assertion Failure Message等等

5.压力测试报告
1、压力测试概要
测试环境:
测试时间:
服务端配置:
客户端配置:
测试工具:JMeter
2、测试说明
(1)名词定义(时间单位ms)
Sample:本次测试场景共运行多少线程;
Average:平均响应时间;
Median:统计意义上的响应时间中值;
90% line:所有线程中90%的线程响应时间都小于xx的值;
Min:响应最小时间;
Max:响应最大时间;
Error:出错率;
Throughput - 吞吐量以“requests/second、requests /minute、 requests /hour”来衡量。 时间单位已经被选取为second,所以,显示速率至少是1.0,即每秒1个请求。 当吞吐量被保存到CVS文件时,采用的是requests/second,所以30.0 requests/second 在CVS中被保存为0.5Kb/sec - 以Kilobytes/seond来衡量的吞吐量
(2)描述测试数据,例如:
分别对以上页面进行压力测试 分别测试10,50,100,500,1000个线程,来模拟这么多用户并发访问系统,每个用户循环访问一次
3、测试结果分析(列出表格,主要是聚合报告各数据对比)
4、给出典型聚合报告(聚合报告名词解释如上2、(1)所述)
5、给出典型图形结果
名词解释:
样本数目是总共发送到服务器的请求数。
最新样本是代表时间的数字,是服务器响应最后一个请求的时间。
吞吐量是服务器每分钟处理的请求数。
平均值是总运行时间除以发送到服务器的请求数。
中间值是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
偏离表示服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
6、根据以上结果分析,给出总结,得出结论,说明调优点
6.非GUI模式下运行Jmeter
具体方法:先在GUI模式下创建TestPlan,保存为jmx文件
命令行启动jmeter:./ApacheJMeter -n -t testplan.jmx (选项-n表示non-GUI,-t指定TestPlan文件)
运行结束后Aggregate Report和PerfMon Metrics Collector就会保存在你指定的文件中
保存PerfMon Metrics Collector的文件拖到Jmerter GUI中就可以看到CUP等使用状况拆线图了
Jemter 压测基础(一)——基本概念、JMeter安装使用、分布式测试、导出测试结果、编写测试报告的更多相关文章
- Jmeter压测基础(二)——Badboy功能、Jmeter参数化、检查点、集合点、动态关联、图形监控
Badboy 以下稍微介绍一下badboy的部分功能: 1.Record;play(badboy打开后默认是recording状态) 2.Assertion(检查点/断言) 3.Variable: t ...
- JMeter压测基础(三)——Mysql数据库
JMeter压测基础(三)——Mysql数据库 环境准备 mysql驱动 JMeter jdbc配置 JMeter jdbc请求 1.下载mysql驱动:mysql-connector-java.ja ...
- JMeter 压测基础(四)——Java工程测试
JMeter Java工程测试 1.eclipse中新建工程 2.导入需要的jar包 从JMeter安装目录lib/ext中两个jar包buildPath到Java project中,分别是“Apac ...
- ESRally压测ElasticSearch性能 CentOS 7.5 安装 Python3.7
1,CentOS 7.5 安装 Python3.7 1.安装开发者工具 yum -y groupinstall "Development Tools"2.安装Python编译依赖包 ...
- 测试基础(三) Jmeter安装
前言 JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试. 进入Jmeter官网:https://jmeter.apache.org/,进行Jmeter压缩包的下载. ...
- java编写jmeter压测脚本
目前项目中接触的比较多的是接口测试,功能测个差不多后会对部分接口进行压测,采用的是java编写脚本,导入jmeter进行压测. 使用到的jmeter的相关包 写一个测试类,继承AbstractJava ...
- 性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控【转】
概述 本文我们将介绍如何使用JMeter+InfluxDB+Grafana打造压测可视化实时监控. 引言 我们很多时候在使用JMeter做性能测试,我们很难及时察看压测过程中应用的性能状况,总是需要等 ...
- jmeter(二十七)分布式压测注意事项
之前的博客:jemter(二十三):分布式测试简略的介绍了利用jmeter做分布式测试的方法,当时只是介绍了背景和原因,以及基本的配置操作,有同学说写得不够详细. 正好今年双十一,我司的全链路压测,也 ...
- JMeter分布式压测实战(2020年清明假期学习笔记)
一.常用压力测试工具对比 简介:目前用的常用测试工具对比 1.loadrunner 性能稳定,压测结果及颗粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多. 2.Apache ab(单接口 ...
随机推荐
- adb shell am broadcast 手动发送广播及adb shell am/pm其他命令
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/zi_zhe/article/details/72229201 在命令行可用adb shell am ...
- linux内核剖析(十一)进程间通信之-共享内存Shared Memory
共享内存 共享内存是进程间通信中最简单的方式之一. 共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区. 共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程 ...
- Hive 根据表中某个字段动态分区 以及临时表创建
使用hive储存数据时,需要对做分区,如果从kafka接收数据,将每天的数据保存一个分区(按天分区),保存分区时需要根据某个字段做动态分区,而不是傻傻的将数据写到某一个临时目录最后倒入到某一个分区,这 ...
- celery --分布式任务队列
一.介绍 celery是一个基于python开发的分布式异步消息任务队列,用于处理大量消息,同时为操作提供维护此类系统所需的工具. 它是一个任务队列,专注于实时处理,同时还支持任务调度.如果你的业务场 ...
- 关于go语言的测试相关内容笔记
其实之前对于测试自己一直比较弱,不管是python的还是go的,关于测试这块并没有非常注重,这次就好好整理一下关于go的测试 单元测试 Go程序主要包含三类测试: 功能测试(test).基准测试(be ...
- 【Log】SLF4J简单入门
SLF4J介绍 SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.按照官方的说法,SLF4J是一个用于日 ...
- python按行遍历一个大文件,最优的语法应该是什么?
理论上来说,总体上file.readlines()可以(取决于实现)不慢于你自己手动的一次次调用file.readline(),因为前者的循环在C语言层面,而你的循环是在Python语言层面. 但是在 ...
- Excel公式与函数——每天学一个
说明(2018-5-29 20:35:53): 1. 根据刘伟的视频讲解进行总结,网上讲Excel公式与函数的貌似就他讲的还不错.在他的微博里看到现在的照片胖了不少,不过还挺帅的,不再是以前那个小屌丝 ...
- lbs@node(lbs asp blog 移植到 nodejs)
lbs@node 2018年的4月26日,我在自己的idea清单中,加上了一条"基于 nodejs 移植 lbs 博客系统". 一.lbs 是什么东东? 它是一款比较小众的博客程序 ...
- VM虚拟机下安装CentOS_6.5_x64
在开始Linux的学习之前,我们必须要有一个实验环境.这里我选择了安装CentOS-6.5-x86_64的Minimal版本,大家也可以选择安装其他的Linux发行版.选择CentOS主要还是因为它比 ...