一、性能测试术语
1、负载
2、TPS:
每秒完成的事务,通常指每秒成功的事务数
3、RT/ART:
响应时间/平均响应时间,是指一个事务花费多长时间完成
4、PV(page view):
每秒用户访问页面的次数,或者页面浏览量,图片、链接、css等这些都是pv
PV获取可以通过负载分发器获取,比如nginx的日志
5、UV、IP、PV、VV
UV:通过互联网访问、浏览网页的自然人
UV与IP的区别:你和你的家人在同一台电脑登录微博,UV+2,IP+1
PV:页面的浏览量或点击量 VV:所有访客一天内访问网站的次数
PV与VV的区别:
你今天10点钟打开了百度,访问了他的3个页面;11点钟又打开了百度,访问了他的2个页面,PV+5,VV+2
6、并发:
狭义并发–所有用户在同一时刻做同一操作,适用于负载测试、压力测试
广义并发–多个用户对系统发出来请求或者进行操作,请求和操作可以不同,适用于混合场景测试、稳定性测试场景
7、场景:
LR中构建的基于事务、脚本、虚拟用户、运行设置、运行计划、监控、分析等一系列操作的集合;
场景中包含了待执行脚本、脚本组、并发用户数、负载生成器、测试目标、测试执行的配置条件等
8、标准差:
标准差越小,说明波动越小,系统越稳定 包括响应时间标准差、TPS标准差、Running
Vuser标准差、load标准差、CPU资源利用率标准差等
9、思考时间:
用户在进行操作时,每个请求之间的间隔时间
10、响应时间:
用户点击百度界面(应用界面),发送请求到应用服务器,再到数据库服务器 数据库服务器处理数据后返回数据到应用服务器,在返回数据到应用界面
下图为响应时间的整个过程
呈现时间(页面渲染时间):浏览器(应用界面)接收到数据呈现页面所需要的时间 –YSlow工具、Google的Lighthouse分析。
响应时间由呈现时间和系统响应时间组成
下图为系统响应时间**(loadrunner和jmeter测试到的是系统响应时间)**
网络传输时间:NI+N2+N3+N4
应用服务器处理时间:A1+A3 (可以通过日志得到)
数据库服务器处理时间:A2
系统响应时间:N1+A1+N2+A2+N3+A3+N4
11、虚拟用户:
测试工具产生的用户
12、每秒链接数:
方案在运行过程中,每秒建立的TCP/IP连接数
查看链接数的方法:
(1)loadrunner查看每秒链接数–RUN模块-connnections per second,如果结果持续增长,有问题
(2)命令查看:xshell工具,连接服务器后,使用命令netstat -ant|grep tcp
12、长链接、短链接:
建立一个请求,链接不断,可以继续发送其他东西–长链接
http1.1伪长链接,connection-keep-alive,真正的长链接,websocket游戏会用到
建立一个请求,发送东西后链接断掉,再发送东西,重新建立链接 --短链接
13、HPS、TPS、QPS:
HPS:每秒点击数,单位是次/秒,提交的http请求数/秒
QPS:(Queries Per Second)每秒查询率,请求数
TPS:事务数/秒
TPS和QPS的区别:
一次登录操作,只关心登录这个功能,登录操作除了1个登录请求,还有的css、html、js请求3个, TPS=1,QPS=4
对于一个界面的一次访问,形成一个TPS;但是一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入QPS
14、并发量:
也叫并发用户数,是指同一时间点对业务功能同事操作的用户数
15、同步、异步、阻塞、非阻塞:
同步:你说完,我再说 。如进程、线程同步,可以理解为进程或线程A和B一块儿配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B执行后,再将结果给A,A继续操作。
同步:被调用方做完事情之后再返回(普通B/S模式同步,http协议)
异步:被调用方先返回,然后再做事情,做完之后再想办法通知调用方(消息队列MQ、AJAX)
阻塞请求:A调用B,A一直等着B的返回,别的事情什么也不干
非阻塞请求:A调用B,A不用一直等着B的返回,先去忙别的事情了
16、死锁:
(1)互斥 (2)占有并等待 (3)非抢占 (4)循环等待
二、系统架构
1、单应用架构:
2、应用服务器和数据库分离:
3、应用服务器做集群:
集群和分布式区别:
集群:同一个业务,部署在多个服务器上
分布式:一个业务拆分成多个子业务,部署在不同的服务器上
把一台服务器的请求变成多台服务器做处理就叫做负载均衡(集群)
4、数据库读写分离:
5、引入搜索引擎来查询:
6、增加缓存:
7、分库分表:
分库
8、应用拆分/微服务 :
三、需求调研
1、性能测试需求分析的内容:
(1)确定性能测试范围,分析出哪些业务纳入性能测试范围
(2)性能测试指标是什么
(3)分析用户使用行为,业务分布,分析业务量
(4)估算tps与并发用户数等性能测试执行依据
2、性能测试业务范围评估(圈定测试范围) :
(1)关键业务
首要维度,是确定被测项目是否属于关键业务,有哪些主要的业务逻辑点。如果项目不属于关键业务(或关键业务点),则可转入第二、三、四个维度进行评估。
(2)日请求量
第二个维度,是界定被测项目各功能点的pv量(或者日请求量),如果pv量不高,系统压力不大,但却是关键业务点,则依据第三个或第四个维度来判断。
(3)逻辑复杂度
第三个维度,是判定被测项目各功能点的逻辑复杂度。如果一个主要业务的pv量不高,但是逻辑很复杂,则也需要通过性能测试。
(4)运营推广计划
第四个维度,是根据运营的推广计划来判定待测系统未来的压力。
(5)其他维度
在实际工作中,应该具体问题具体分析。例如,当一个功能点不满足以上4个维度,但又属于内存高消耗、CPU高消耗时,也可列入性能测试点行列。
3、业务的性能指标 (jmeter/loadrunner):
(1)并发用户数:在同一时刻与服务器进行了交互的在线用户数
(2)响应时间:客户发出请求到得到响应的整个过程的时间
(3)网络吞吐量/吞吐率:一次性能测试过程中网络上传输的数据量的总和 (4)每秒处理事务数(tps):每秒钟系统能够处理事务或交易的数量
(5)点击率:每秒用户向web服务器提交的http请求数
(6)事务成功率:本次测试中出现成功的事务数量 / 事务的总数
4、应用服务器及硬件性能指标:
> (1)cpu占用率:—nmon/vmstat/top
对一个时间段内cpu使用状况的统计,建议:<80%
> (2)loadaverage:—uptime/top
一段时间内cpu正在处理以及等待cpu处理的进程数之和的统计信息,也就是cpu使用队列长度的统计信息。建议:<0.8cpu个数核数<3
> (3)page in/out:—nmon
pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
>(4)磁盘I/O:—nmon/iostat/sar
>(5)SWAP:—nmon
有没有交换页面
>(6)网络:
带宽是否充足
> (7)tomcat启动的总线程数:—top
关注连接数会不会无限制增长、线程数量是否足够
> (8)Full Gc次数:—jstat/jconsole
> (9)JVM内存使用与回收:—jstat/jconsole
> (10)JDBC监控(应用端):—Jprofiler
> (11)Exception日志监控:–Tail&grep
监控压力过程中是否有异常日志产生
5、数据库性能指标:
> (1)DB cpu占用率:—nmon
数据库CPU利用率,建议:<80%
> (2)DB load average:—top
数据库服务器负载
> (3)DB mem:—nmon
内存使用是否平稳
>(4)DB 磁盘I/O:—nmon/iostat/sar
I/O是数据库性能一个非常重要的因素,I/O wait < 30%
>(5)数据库线程数:—Top
>(6)缓存命中率:—AWR
从缓存中读取数据的次数/所有访问数据次数
(磁盘读取次数+缓存读取次数)
>(7)共享池命中率:—AWR
假如这个值低于95%就要考虑调整应用(改写多为变量绑定)或者增加内存
>(7)Top耗时sql:—AWR
找出性能较差的sql,进行优化