通过工做4年,多个性能项目的实战,我总结了一份各个性能项目共性的东西(即如何作性能的流程),但愿你们拍砖。我把性能测试的分为三大块,即前期准备、实战监控、问题定位。java
1、前期准备(基础核心)mysql
这个是基础,前期准备工做作的越扎实到位,测试结果会越接近真实,也就更有意义,并且工做量也是蛮大的。算法
一、熟悉系统架构,业务主流程,肯定性能测试的核心测试模块;(找开发人员或者项目经理要相关文档,至少应该熟悉到指定业务会涉及到后台的哪些表,哪些表的数据量会比较大,提早有个性能可能会出现的估测;另外测试服务器、中间件、数据库等的拓扑结构必须也得了解)sql
二、性能测试的具体模块的需求:必需要具体,特定的条件下,包括多少用户,多久时间,多大数据量下进行什么业务,最终指标多少。即,获取的性能需求是在特定的场景条件下的,而不是孤立的一个数值。(最真实的数据是经过系统访问日志分析真实的负载和主要业务场景来获取性能需求),(目前大部分的产品性能测试都是有个大概的性能指标,并且是人工拍出来的结果,因此性能测试的目的都是评估该系统的处理能力可否达到和预期的同样)数据库
三、性能测试的场景选取:单业务,混合业务,稳定性,大数据量,可靠性(即其中一台tomcat或者其余中间件出故障后的处理,数据库灾备的切换等),(这些场景并不必定每一个接口都须要涉及,看实际线上的使用状况,有选择性重点的测试)(想清楚应该选取哪些场景,其实性能测试用例的雏形也就有了)缓存
四、性能测试数据肯定:具体对应什么表须要多少数据量;以便提早准备测试数据。(尤为是有些测试数据比较复杂,会不一样表之间有关联,能够找开发一块儿商讨一下测试数据如何弄;另外准备的测试数据必定要有效,不然你传参给函数,返回的都是失败的,这个测试结果就和真实有出入,致使测试无心义)tomcat
五、性能测试用例的编写;包括:场景描述,并发量,压测时间,数据量,加压方式,测试方法,重点关注指标,预期指标等。(这个性能测试用例必定要好好写,并且是必不可少的,由于我以为把这个写的越清晰明了,对核心业务或者说压力业务也就梳理的越透彻;完成这一步,其实内心就已经对该系统如何进行性能测试内心有数了)服务器
六、性能测试环境的准备:在相应的服务器上安装性能相关软件,如JDK,nmon,jmeter,orzdba等。(实际因为资源有限,只是在现有的硬件资源条件下,评估性能能力,从而间接的估算生产环境的性能。)网络
七、性能测试脚本的调试。性能测试脚本能够用本地的图形化界面的jmeter进行调试,方便查看返回的是什么错误。(如是接口性能测试,参考文档是接口的开发文档等;脚本调试成功后就能够上传到相应的压力服务器上,利用非图形化的jmeter压测)架构
2、实战监控(水到渠成)
前期的准备工做作好后,万事俱备,就差跑起来了。
一、开启实时监控后,启动性能脚本,开始压测。(压力机服务器,数据库服务器,业务服务器开启nmon的后台监控;数据库服务器的慢查开关、无索引开关)
二、压测时候重点观察数据库服务器和业务服务器;(须要查看业务服务器的处理日志状况,看里面是否有错误,如tomcat日志;查看数据库服务器的慢查和无索引的日志;查看服务器自己的状态,如cpu、io、memory等)
3、问题定位(难点攻坚)
这个是难点也是最体现性能工程师价值的地方,须要平时不断的下功夫钻研和积累的。
更多测试实战技能,能够关注公众号大话性能,不断的学习提升。
一、硬件资源消耗状况。(cpu,内存是否消耗过大,io等待是否不少,负载值是否很大,链接数是否超过限制,打开文件数是否过大等。这些是表现,咱们得经过表现去分析究竟是什么缘由致使该现象的出现。)
二、Mysql数据库服务器。(能够用show processlist不定时的查看目前数据库链接都在干什么,有没有消耗时间比较长的,若有,这个链接就是怀疑对象;慢查询是否不少,若有须要优化sql语句或者表结构加索引等;有无锁消耗的时间不少,查看使用的数据库引擎,不一样的引擎锁的粒度不同;
三、mysql配置参数的设定也是很关键的,这个也须要留意。好比更新比较多的表,其实缓存对它来讲就是没有意义的,诸如此类的。)
四、JVM运行状况。(目前95%的都是基于java的开发的项目,能够用jstack分析线程堆栈的运行状况,利用jstat分析GC状况,定位有问题的地方(如死锁,死循环,资源等待锁,内存泄露等))
五、中间件运行状况(目前,我遇到的都是tomcat,查看启动的各个参数是否须要调优,如内存分配是否合理,垃圾回收的算法等)
六、网络状况(对于传输数据量大的测试,在并发大的状况下必须考虑网络有无瓶颈)
以上就是性能测试的大部分环节,内容不少,须要提高的东西也不少,更多内容能够关注公众号大话性能,继续学习。https://dwz.cn/bLi77L79
另外,我也简单总结了下性能测试能够研究的内容,供你们参考。