参加工作这些年来,性能测试做过不少,主要用的LoadRunner 11和JMeter。LoadRunner可以说功能非常强大,但是售价嘛,你们懂的,据说要几十万刀(老板,压测计划先等下,我先去卖个房~),然后你会遇到各种问题,比如“怎么破解?”、“破解后新密钥提示not allowed。。。what?竟然要改注册表?”,“用管理员运行为啥子会被禁止?”、“终于运行上了。。。Controller can not create Vuer?”、“Vuser终于建好了。。。什么?最多就100个?”,然后,一天过去了,我摸着更加稀薄的头顶,陷入了沉思。。。。 直到我遇到了JMeter,免费?开源?好了就你了,先上车再说~~于是有了这个JMeter系列的博文,用以记录我的学习过程。不过我也不会完全生硬的去照搬官网,我尽量把实际使用过程中的骚操作,小技巧等记录下来(铁子你是最骚的 ~) PS:当然不是说LoadRunner不好,实际上LR的强大程度是完全对得起它的售价的(无敌的Analysis报表分析器默秒全),如果之后有精力,我也会分享LR的学习过程。
在开始之前,我觉得有必要把性能测试的一些基础概念介绍下:
1.负载测试(Load Testing):负载测试简单来说,就是测试系统在不同环境、不同条件下的负载能力。通常需要评估系统的吞吐量、响应事务、事务处理速率等等性能指标。
2.压力测试(Stress Testing):类似于数学中的去极限,这种测试就是用于验证系统对于压力能做出正常响应的临界值,即瓶颈。
3.容量测试(Volume Testing):用于确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等。
对于Web服务,我们主要需要关注以下指标:
1.RT(Response Time):响应时间。 响应时间是指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间,单位一般为秒或毫秒。
2.HPS(Hits Per Second):每秒点击次数 即用户每秒向Web服务器提交的HTTP请求数,单位是次/秒。HPS是评估虚拟用户产生的负载量的最直观的指标。
3.TPS(Transaction per Second):每秒处理事务数 系统每秒处理事务数,单位是次/秒。这个指标记录的是系统在每秒钟内,各个事务通过、失败以及停止的数量,TPS是考察系统性能的一项重要指标。
4.QPS(Query per Second):每秒处理查询次数 单位是次/秒。对于互联网业务中,如果某些业务有且仅有一个请求连接,那么TPS=QPS=HPS,一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器点击请求。
5.FR(Failure Ratio):错误率 错误率指系统在负载情况下,失败交易的概率。错误率=(失败交易数/交易总数)*100%。稳定性较好的系统,其错误率应该由超时引起,即为超时率。 不同系统对错误率的要求不同,但一般不超出千分之六,即成功率不低于99.4%。
6.Connections:连接数 每秒连接数是显示每秒建立的TCP/IP连接数。理想情况下,很多HTTP请求都应该使用同一连接,而不是每个请求都新打开一个连接。通过每秒连接数图可以看出服务器的处理情况。
7.Throughput:吞吐量 吞吐量是指服务器每秒的吞吐量。其度量单位是字节,表示用户在任何给定的每一秒从服务器获得的数据量。可以依据服务器的吞吐量来评估虚拟用户产生的负载量,以及看出服务器在流量方面的处理能力以及是否存在瓶颈。
8.SR(Successful Rounds):成功的请求 所有请求中,成功的请求,及其数量。
9.FR(Failed Rounds):失败的请求 所有请求中,失败的请求,及其数量。
10.SH(Successful Hits):成功的点击次数 所有的点击中,成功的点击次数。
11.FH(Failed Hits):失败的点击次数 所有的点击中,失败的点击次数。
对于页面前端,我们主要需要关注以下指标:
1.首次显示时间 在浏览器地址栏输入URL按回车到用户看到网页的第一个视觉标志为止。单位是毫秒。
2.OnLoad事件时间 浏览器触发onLoad事件的时间,当原始文档和所有引用的内容完全下载后才会触发这个事件。单位是毫秒。
3.完全载入的时间 所有onLoad JavaScript 处理程序执行完毕,所有动态的或延迟加载的内容都通过这些处理程序触发的时间。单位是毫秒。
4.页面大小 整个页面的大小。单位是KB。
5.请求数量 从网站下载资源时所有网络请求的总数。单位是次。
6.DNS时间 DNS查找时间。单位是毫秒。
7.连接时间 连接时间就是浏览器与Web服务器建立TCP/IP连接的时间。单位是毫秒。
8.服务器时间 服务器处理时间。单位是毫秒。
9.传输时间 内容传输所用时间。单位是毫秒。
10.等待时间 等待某个资源释放的时间。单位是毫秒。
对于数据库,我们主要需要关注以下指标:
1.SQL耗时 执行SQL的耗时。单位是毫秒。
2.QPS 执行SQL时,每秒的查询次数。单位是个。
3.TPS 执行SQL时,每秒的事务次数。单位是个。
4.Key Buffer命中率 索引缓冲区命中率。单位是百分之。
5.InnoDB Buffer命中率 InnoDB缓冲区命中率。单位是百分之。
6.Query Cache命中率 查询缓存命中率。单位是百分之。
7.Table Cache命中率 表缓存命中率。单位是百分之。
8.Thread Cache命中率 线程缓存命中率。单位是百分之。
9.锁等待次数 锁的等待次数。单位是次。
10.锁等待时间 锁的等待时间。单位是微秒。
参考资料: 《零成本实现Web性能测试——基于Apache JMeter》温素剑编著,电子工业出版社 https://help.aliyun.com/document_detail/29338.html?spm=a2c4g.11186623.6.613.5cc314767Pf3M6