性能测试第一天
基础认识,从用户角度来说,web系统响应的直观认识:
1、系统架构实现技术
(1)主要从CDN、负载均衡服务器、网络服务器、应用服务器、缓存服务器、数据库服务器描述;
(2)CDN:
1 CDN,Content-Distribution-Network
2 内容分发网络
3 是IDC运营商提供的一种婚存服务
(3)负载均衡服务器:
1 功能:根据设定的规则将来自用户的 请求分配到不同的服务器上
2 常见的负载均衡服务器:
3 LVS
4 Nginx
5 F5:专用的负载均衡服务器
(4)网络服务器:
功能:1、对请求进行解析
2、对静态资源进行缓存
常见的网络服务器软件:Nginx
Apache
(5)应用服务器:
1 功能:应用服务器是项目部署的地方,为项目提供运行环境
2
3 常见的应用服务器软件:Tomcat
4 Weblogic
5 jboos等
6
7 与性能相关的技术 :内存使用配置
(6)缓存服务器:
1 功能:对应用程序经常访问的数据库提供缓存服务,将这些平常经常访问的数据缓存到内存中
2
3 常见的缓存应用软件:Memcache
4 Redis
5
6 注意:将对系统整体影响最多的数据放到缓存里面
7 提高缓存的命中率(从缓存中成功读取数据的次数/访问缓存的总次数)
(7)数据库服务器:
功能:提供数据存储功能
常见的数据库:Mysql、Oracle、db2、infomix、Nosql
1 与性能有关的技术:
2 (1)读写分离
3 (2)分库
4 (3)分表
5 (4)RAID
注释:(1) 读写分离:主数据库---主数据库只要负责额写入数据
从数据库--从数据库只要负责查询数据
主数据库和从数据库之间要进行数据同步,保证数据的一致性,降低单台数据库服务器的I/O量和CPU使用率;
(2)分库:将子系统或业务的数据存储到单独的数据库服务器上;
(3)分表:把一张表拆分成多个表,将一个表里面的数据存储到多张表里面
垂直拆分:垂直拆分,减少的是表的字段数,单个表里面的记录行数没有变;
水平拆分:水平拆分,减少单个表里面的记录行数,避免单个表记录数据太多;
(4)RAID:冗余磁盘阵列
RAID0、RAID1、RAID5(最常用)、提高磁盘的读写性能。
2、性能测试基础
(1)什么是性能测试?
性能测试根据协议,模拟用户的操作,向服务器产生压力,检查服务器是否有性能方面的问题。(性能测试是基于协议的,与页面无关)
(2)性能测试的种类?
1 负载测试:测试系统在崩溃前可以处理的最大业务能力
2
3 压力测试:测试系统在搞负载情况下是否可以长时间稳定运行
4
5 并发测试:测试系统和数据库在并发情况下有没有线程安全问题、资源争用导致的锁问题
6
7 配置测试:用一套脚本或者场景运行在不同的配置上,以获取系统的最优配置
8
9 基准测试:获取系统调优前的性能表现,为调优后提供一个比较的标准
(3)性能测试指标
重要指标:吞吐量、资源占用、并发用户数、响应时间、业务成功率
吞吐量
单位时间内服务器处理的业务量
单位:TPS:Transaction Per Second 单位时间内服务器处理的事务量
HPS:Hits Per Second 单位时间内服务器处理的点击量
QPS:Query Per Second 单位时间内服务器处理的查询量
单位时间内的网路数据流量
单位:bit 比特
Byte 字节
KB,M
1 资源占用
2
3 CPU:处理同样的应用CPU使用率越低越好,一般CPU使用率不超过75%
4
5 内存:一般情况下内存使用率不超过75%
6
7 磁盘I/O:从系统整体看,对磁盘的读写越少性能越好
8
9 网络带宽:不能超过网卡提供的带宽
1 并发用户数
2
3 在线用户数:在线用户不进行操作的情况下,对系统的负载几乎是可以忽略的(在线用户不一定与服务器进行了数据的交互)
4
5 并发用户数:同一时刻与服务器进行数据交互的所有用户数量。
6 (1)计算并发用户数的时候,一般要转换为并发业务数量
7 (2)计算并发用户数的时候,一般使用2/8原则:80%的业务是在20%的时间内发生的
8 (3)比如某网站一天有10万次访问
9 (4)并发数据来源:新项目:跟PO、PM确定访问用户量
10 老项目:从历史数据中提取访问数据
11 注:并发是一个瞬时的概念,不是一个过程
一般情况下,可以参考一下办法来确定性能测试时的并发用户数:
(1)参考其他同类产品;(2)分析历史数据;(3)试上线运行。
1 响应时间(一般的指标为2 5 7)
2
3 用户角度的响应时间:从提交请求到显示页面
4
5 服务器角度的响应时间:从收到请求开始到发出响应结束
6
7 性能测试过程中的响应时间:从发出请求开始到响应结束
注:以一个web应用的页面响应时间为例,从客户端发送请求到服务处理完成的整个过程如上图所示。从图中可以看出,页面的响应时间可以分解成“网路传输时间”(C1+S2+S3+C4)和“应用服务器处理的时间”(S1+S4),“数据库处理的时间”(d1),所以整个web页面请求的响应时间为C1+S1+S2+d1+S3+s4+c4
1 业务成功率:在涉及到钱的业务中,要优先考虑业务成功率,要保证业务成功率尽量接近100%
注:用户角度的响应时间组成:
服务器角度的响应时间组成:服务器处理请求的时间+服务器之间传输的时间
性能测试过程中的响应时间组成:
(4)性能测试过程
注:性能测试的介入时间:一般认为性能测试要在系统测试完成之后开始介入,实际上,性能测试可以在产品原型和数据结构设计完成后就开始介入,开始分析表结构和找出最优SQL语句;
1)确定哪些业务需要纳入性能测试的范围中(用户访问最频繁的、被调用比较多的业务模块、业务重要性高的)
2)确定性能测试的指标(吞吐量、资源占用、响应时间、并发用户、业务成功率)
3)人员和进度安排
4)测试环境准备(测试环境的软件配置与生产环境尽量一样,硬件配置从水平角度进行拆分)
5)脚本开发
6)监控,进行性能测试
7)手机分析结果
8)定位问题,调优
9)复测
3、性能测试脚本开发------欲知后事,且听下回分解。
本文来自博客园,作者:Yi个人,转载请注明原文链接:https://www.cnblogs.com/feifei-cyj/p/8426051.html