1.常见的性能问题
(1)内存泄漏
软件运行时内存没有回收,导致系统运行越来越慢。
(2)CPU利用率达到100%
(3)线程锁定和堵塞,导致系统运行越来越慢
(4)查询速度越来越慢
(5)受外部系统影响越来越大
2.为什么要进行性能测试?
(1)获取系统性能指标作为性能
(2)验证系统性能指标是否符合要求
应用系统能否满足系统的性能指标
应用系统能否处理预期用户数量和盈余能力?
应用系统能否处理预期?数量(原子性、一致性、隔离性、持久性)
系统能否在预期和非预期的情况下稳定运行?
用户在使用软件时能否获得舒适的体验?
(3)查看系统是否有内存泄漏等瓶颈
(4)系统在正常工作下可以处理的用户数量
(5)了解系统性能,使运维部分能够更好地规划系统的各种配置
3.确定性能测试的要求(性能指标,量化)
(1)分析关键性能指标
根据用户要求进行分析
(2)分析关键业务
系统问题通常不是系统的所有功能问题,而是由一些关键业务或功能问题引起的
①在分析性能指标时,应选择用户经常使用的功能。
②计算量大的业务
4.测量系统性能的不同维度
(1)研发人员
系统的架构是否合理,是否支持多线程并发这类操作
数据库设计是否合理(索引与合理的相关表关系)
算法:核心算法是否高效
设计和代码:是否存在不合理的线程同步和不合理的资源竞争
(2)系统运维人员
系统资源利用率、服务器(CPU,内存、磁盘、网络带宽等)的利用率和数据库的使用情况
系统容量:系统支持最大用户数
系统稳定性:能否稳定运行,每天24小时
如果要扩展系统的可扩展性,系统可以支持
(3)用户
使用舒适,响应速度快,稳定性好
(4)性能测试人员
需要注意以上层次
当系统性能达不到标准时,注意系统性能的瓶颈
(1)并发用户数
业务层面并发数:同时向服务器发送请求的用户数量。
后端服务器并发数:同时向后台服务器发送请求数。
(2)相应时间
这意味着用户发送请求并将所需时间充分显示到用户所期望的响应。
前端响应时间
系统响应时间
服务器之间的通信处理请求需要时间
(3)事务响应时间
事务:指一系列密切相关的操作的集合
在系统中完成事务的平均响应时间
(4)每秒事务通过数
TPS 平均每秒处理的事务数量
(5)点击率
每秒点击数,代表用户每秒向web服务器提交HTTP请求的个数
点击率越大,服务器压力越大
(6)
指单位时间系统处理的信息量
TPS, HPS, bytes/second
(7)思考时间
模拟用户时间操作的停顿时间
(8)资源利用率
系统在运行的时候资源的使用情况,包括CPU,内存、硬盘、网络等
6.性能测试方法
(1)基准测试(无性能要求,主要了解系统的性能指标)
新版本的系统或新接管的系统需要进行基准测试,以获得系统的性能指标作为未来提高系统性能或保持系统性能的基准。
基准测试不仅可以获得系统的基准性能指标,还可以发现新系统的一些性能问题
(2)并发测试
同时,向后端服务器发送请求,测试系统的性能,看看系统是否会出现资源竞争、死锁等问题
(3)压力试验
压力测试一般指后端压力测试,不断对系统施加压力,看系统在长期处于临界饱和情况下,系统的稳定性以及系统性能指标的变化。
压力行压力测试时,负载会不断增加到系统中,使系统长期处于高负荷状态,看系统在极限条件下是否稳定,确定系统在极限条件下CPU其他指标,如利用率、内存使用等。
(4)配置测试
测试不同配置的系统配置,找出能使系统性能发挥最佳作用的配置。
配置操作系统 Linux, Ubuntu, Redhat
配置数据服务器 读写,存储容量大
JVM配置
网络环境
服务器 内存、磁盘等
(5)可靠性测试
验证系统长期运行的稳定性 (24小时,一周或一个月)
约70%的系统实际负载,长时间运行,看系统是否稳定,指标是否稳定