性能测试:html
并发测试,压力测试,负载测试,容量测试,疲劳测试mysql
数据库压测:https://www.cnblogs.com/hally/p/8360637.htmllinux
并发测试:探测系统业务并发处理能力,同一秒能处理多少请求ios
压力测试:必定时间段内,维持必定数量用户的请求,系统未出错,说明系统抗压能力正常正则表达式
负载测试:探测系统的瓶颈sql
容量测试:往数据库中填充必定预估的数据量,再进行并发测试或者压测测试,主要看系统能支撑到多大的业务量数据库
疲劳测试:通常指系统持续至少8小时以上的高并发测试apache
性能测试的指标:服务器
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)
理解以下:
一、Tps即每秒处理事务数,包括了
1)用户请求服务器
2)服务器本身的内部处理
3)服务器返回给用户
这三个过程,每秒可以完成N个这三个过程,Tps也就是3;
二、Qps基本相似于Tps,可是不一样的是,对于一个页面的一次访问,造成一个Tps;但一次页面请求,可能产生屡次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。
软件性能的几个主要术语
一、响应时间:对请求做出响应所需要的时间
网络传输时间: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)
注意蓝色部分
一、 添加线程组
二、 添加http请求
三、 添加查看结果树
四、 在http请求中输入服务器名称,端口、路径、参数
五、 运行,查看结果
六、 添加http请求默认值
七、 在每一个单个接口下面添加响应断言
断言的内容就是你的预期结果----验证结果
8添加正则表达式------关联
要求:
所要提取的内容
先找前面在找后面
九、 关联数据
十、 参数化----CSV文件、数据库
CSV文件
先建立一个CSV文件
十一、 调取CSV文件内参数
数据库:
十二、 压力测试
导出测试报告:
配置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