性能测试概念指标

性能测试:

并发测试,压力测试,负载测试,容量测试,疲劳测试

数据库压测:https://www.cnblogs.com/hally/p/8360637.html

并发测试:探测系统业务并发处理能力,同一秒能处理多少请求

压力测试:一定时间段内,维持一定数量用户的请求,系统未出错,说明系统抗压能力正常

负载测试:探测系统的瓶颈

容量测试:往数据库中填充一定预估的数据量,再进行并发测试或者压测测试,主要看系统能支撑到多大的业务量

疲劳测试:一般指系统持续至少8小时以上的高并发测试

性能测试的指标:

1,服务器性能指标:

CPU

内存

磁盘I/O带宽

网络I/O带宽

2,应用程序

性能测试评估的标准

CPU--->user%+sys%<70%(好),70%<user%+sys%<=85%(坏),90%<=user%+sys%(糟糕)

内存-->Swap in(si)=0,Swap out(so)=0(好),Per CPU with 10 page/s(坏),

More Swap in & swap out(糟糕)

磁盘--->iowait%<20%(良好),20%<iowait%<=35%(坏),iowait%>=50%(糟糕)

其中:%user:表示CPU处在用户模式下的时间百分比

 %sys:  表示CPU处在系统模式下的时间百分比

 %iowait:表示CPU等待输入输出完成时间的百分比

 swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM

 swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK

 

系统性能分析工具

图形化监控:spotlight(mysql,linux)

命令行监控:Vmstat,sar,iostat,netstat,free,ps,top

常用组合方式:用vmstat,sar,iostat检测是否是cpu瓶颈

 用free,vmstat检测是否是内存瓶颈

 用iostat检测是否是磁盘I/O瓶颈

 用netstat检测是否是网络带宽瓶颈

linux 性能评估与优化

1,系统整体性能评估(uptime命令)

执行结果:19:35:14 up  4:40,  5 users,  load average: 0.00, 0.00, 0.00

PS:load average这个值:这三个值得大小一般不能大于系统CPU的个数,如:输出系统

中有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载值很高

可能会影响系统性能,但是偶尔大于8时,不用担心,一般不会影响系统性能,相反,如果

load average的输出值小于cpu个数,则表示cpu还有空闲的时间片,

如:本例子中cpu时非常空闲的

2,CPU性能评估

(1)利用vmstat命令监控系统cpu

该命令可以显示关于系统的各种资源之间相关性能的简要信息,我们主要用它来看cpu的负载

ps:  

-----》(Procs)

r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统Cpu的个数,说明

cpu不足,需要增加cpu

b列表示在等待资源的进程数,如正在等待I/O,或者内存交换等

    -----> (cpu)

us列显示了用户进程消耗的cpu时间百分比。sy的值较高时,说明内核消耗的cpu资源很多

us+sy的参考值为80%,如果us+sy的值大于80%说明可能存在cpu资源不足

(2)利用sar命令监控系统cpu

sar功能很强大,可以对系统的每个方面进行单独的统计,但是使用sar命令会增加

系统的开销,不过这些开销是可以评估的,对系统的统计结果影响不大

ps:%user列显示了用户进程消耗的cpu时间百分比

%nice 列表示了运行正常进程所消耗的cpu时间百分比

%system列显示了系统进程消耗的cpu时间百分比

%iowait列显示了IO等待所占用的CPU时间百分比

%steal列显示了在内存相对紧张的环境下pagein强制对不同页面进行的steal操作

%idle列显示了cpu处在空闲状态的时间百分比

问题:

1,你是否遇到过系统CPU整体利用率不到,而应用缓慢现象?

在一个多cpu的系统中,如果程序使用了单线程,会出现这么个情况

cpu的整体使用率不高,但是系统应用响应很缓慢,这个可能就是由于

程序使用了单线程导致的,单线程只能使用一个cpu,导致整单个cpu的

占用率为100%,无法处理其他请求,而其他的cpu却闲置,这就导致了整体

CPU使用率不高,而应用程序很缓慢的原因

3,内存性能评估

(1)利用free指令监控内存

free是监控linux内存使用状况的最常用指令

ps:一般有这样一个验证公式:应用程序可用内存/系统物理内存>70%时

表示系统内存资源非常充足,不影响系统性能,应用程序可用内存/系统

物理内存<20%,表示系统内存资源紧缺,需要增加系统内存,20%<应用程序

可能内存/系统物理内存<70%,表示系统内存资源基本能满足应用需求,暂时

不影响系统性能

(2)利用vmstat命令监控内存

(memory):swpd列表示切换到内存交换区的内存数量(以k为单位)

如果swpd的值不为0,或者比较大,只要si,so的值长期为0,这种情况一般下

不用担心,不会影响系统性能

free列表示当前空闲的物理内存数量(以k为单位)

buff列表表示buffers cache的内存数量,一般对块设备的读写才需要缓冲

cache列表示page cached的内存数量,一般作为文件系统cached

频繁访问文件会被cached,如果cache的值比较大,说明cached的文件数量较多

如果此时IO中比较小,说明文件系统效率比较好

(swap):si列表示由磁盘调入内存,也就是内存进入内存交换区的数量

     so列表示由内存调用磁盘,也就是内存交换区进入内存的数量

 一般情况下:si,so的值为0,如果长期不为0,则系统内存不足

4,磁盘I/O性能评估

(1)硬盘存储基础

利用sar评估磁盘性能

通过sar -d组合命令,可以对系统的磁盘IO做一个基本的统计

ps:关注几个参数:

await:表示平均每次设备I/O操作的等待时间(以毫秒为单位)

svctm: 表示平均每次设备I/O操作的服务时间(以毫秒为单位)

%util:表示一秒中有百分之几的时间用户I/O操作。

对于磁盘IO性能,一般如下评判标准:

正常情况下svctm应该是小于await值,而svctm得大小和磁盘性能有关

,cpu,内存得负载也会对svctm得值造成影响,过多得请求也会间接得导致

svctm值得增加

await值得大小一般取决于svctm得值和I/O队列长度以及I/O请求模式。如果

svctm得值与await得很近,表示几乎没有I/O等待,磁盘性能很好,如果await

得值远高于svctm得值,则表示I/O队列等待太长,系统上运行得应用将变慢

此时可以通过更换更快得硬盘来解决问题

%util项得值也是衡量磁盘I/O得一个重要指标,如果%util接近100%,表示磁盘产生得

I/O请求太多,I/O系统已经满负荷在工作了,表示磁盘可能存在瓶颈

5,网络性能评估

(1)通过ping检测网络得连通性

(2)通过netstat -i组合检测网络得接口状况

(3)通过netstat -r组合检测系统得路由表信息

(4)通过sar -n组合显示系统得网络运行状态

吞吐量

点击率

性能测试执行概念:

用户数===>线程数

集合点===>设定用户数,凑够数量之后,同一时间向服务器发送请求

loadrunner--->还有另外一种集合点方式:凑够所有的用户,同一时间向服务器发送请求

TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数

预估TPS值:

场景:年放款量4000亿,平均每笔2000元,总共放款次数4000亿/2000=2000万。TPS=2000万/365/24/3600=6.34/s:表示每秒处理6.34个放款请求

QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准

预估值QPS:

2000万*10=2亿(10张表的总和)

QPS = 2000万/3s=667万/s(数据库单表查询速度667万/s)

理解如下:

1、Tps即每秒处理事务数,包括了

1)用户请求服务器

2)服务器自己的内部处理

3)服务器返回给用户

这三个过程,每秒能够完成N个这三个过程,Tps也就是3;

2、Qps基本类似于Tps,但是不同的是,对于一个页面的一次访问,形成一个Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。

软件性能的几个主要术语

1、响应时间:对请求作出响应所须要的时间

网络传输时间:N1+N2+N3+N4

应用server处理时间:A1+A3

数据库server处理时间:A2

响应时间=N1+N2+N3+N4+A1+A3+A2

性能测试的流程:

1,调研

2,出测试方案

3,编写测试脚本

4,调试测试脚本

5,基准压测

6,并发测试或者压力测试(三轮)

7,负载测试(三轮)

8,疲劳测试

9,输出测试报告并给出优化建议

压测的技术点:确定压测方案(直接压测,阶梯压测)

 设置集合点

 事务

 检查点

 监控

 减压

服务开启(Tomcat、数据库、Redis)

注意蓝色部分

1、 添加线程组

 

2、 添加http请求

 

 

3、 添加查看结果树

 

 

 

4、 http请求中输入服务器名称,端口、路径、参数

 

 

5、 运行,查看结果

 

 

6、 添加http请求默认值

 

 

 

7、 在每个单个接口下面添加响应断言

断言的内容就是你的预期结果----验证结果

 

 

 

 

 

 

 

 

8添加正则表达式------关联

 

 

要求:

所要提取的内容

先找前面在找后面

 

 

 

9、 关联数据

 

 

 

10、 参数化----CSV文件、数据库

CSV文件

 

 

先创建一个CSV文件

 

 

 

 

11、 调取CSV文件内参数

 

 

数据库:

 

 

 

 

 

 

 

 

 

 

 

 

12、 压力测试

 

 

 

 

 

 

 

 

导出测试报告:

配置jmeter环境变量:添加JMETER_HOME=D:\apache-jmeter-4.0

Path中添加%JMETER_HOME%\bin

 

接口测试报告生成命令 

jmeter -n -t source.jmx -l result.jtl -e -o /tmp/ResultRepor

           脚本名称   生成HTML格式   报告路径

jmeter -n -t D:\jmeter\gg.jmx -l result.jtl -e -o D:\aa

 

 

猜你喜欢

转载自www.cnblogs.com/wyl-520/p/9187977.html