基础认识,从用户角度来说,web系统响应的直观认识:
1、系统架构实现技术
(1)主要从CDN、负载均衡服务器、网络服务器、应用服务器、缓存服务器、数据库服务器描述;
(2)CDN:
1 CDN,Content-Distribution-Network2 内容分发网络3 是IDC运营商提供的一种婚存服务
(3)负载均衡服务器:
1 功能:根据设定的规则将来自用户的 请求分配到不同的服务器上 2 常见的负载均衡服务器:3 LVS4 Nginx5 F5:专用的负载均衡服务器
(4)网络服务器:
功能:1、对请求进行解析 2、对静态资源进行缓存常见的网络服务器软件:Nginx Apache
(5)应用服务器:
1 功能:应用服务器是项目部署的地方,为项目提供运行环境2 3 常见的应用服务器软件:Tomcat4 Weblogic5 jboos等6 7 与性能相关的技术 :内存使用配置
(6)缓存服务器:
1 功能:对应用程序经常访问的数据库提供缓存服务,将这些平常经常访问的数据缓存到内存中2 3 常见的缓存应用软件:Memcache4 Redis5 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、性能测试脚本开发------欲知后事,且听下回分解。