目录
一、常见的性能问题
二、为啥要进行性能测试?
三、确定性能测试的需求(性能指标,量化)
1.关键性能指标分析
2.关键业务的分析
四、不同维度衡量系统的性能
1.研发人员
2.系统运维人员
3.用户
4.性能测试人员
五、性能指标
1.并发用户数
2.响应时间
3.事务的响应时间
4.每秒事务通过数
5.点击率
6.吞吐量
7.思考时间
8.资源利用率
六、性能测试的方法
1.基准测试:了解系统的性能
2.并发测试
3.压力测试
4.配置测试
5.可靠性测试 24h甚至一周
一、常见的性能问题
1.内存泄漏
软件运行时,没有回收内存,导致系统运行越来越慢
2.CPU使用率达到100%
3.线程死锁阻塞,造成系统运行越来越慢
4.查询速度越来越慢
5.受外部系统的影响越来越大
二、为啥要进行性能测试?
1.获取系统性能的指标,作为性能基准指标
2.验证系统的性能指标,是否符合需求
应用系统是否能满足系统的各项性能指标
应用系统是否可以处理预期的用户数量,并且有盈余能力
应用系统是否可以处理预期的事务数量
在预期和非预期的情况下,系统是否可以稳定运行
在预期和非预期的情况下,用户使用软件时,是否可以获得舒适的体验
3.看系统是否有内存泄漏等瓶颈问题
4.看系统在正常工作情况下,能够接受用户访问的数量
5.了解系统的性能,让运维部门更好的规划系统的各种配置
三、确定性能测试的需求(性能指标,量化)
1.关键性能指标分析
同一时刻,支持200万用户在线,18个小时要处理2000万次交易,平均每秒处理309条,高峰期每秒处理309 * 3 = 927条
2.关键业务的分析
系统出问题,一般不是系统的所有功能出现问题,而是一些关键的业务或者功能出现问题
(1)在分析性能指标时,要选择用户频繁使用的功能
(2)计算量较大的业务(淘宝支付,要用到很多接口,优惠卷、余额扣款等)
四、不同维度衡量系统的性能
1.研发人员
系统架构是否合理,是否支持多线程并发
数据库设计是否合理,(合理放入索引和合理的表关联关系)
核心算法是否高效
设计和代码:是否存在不合理的线程同步方式和不合理的资源竞争
2.系统运维人员
关注系统对资源的利用率,服务器(CPU、内存、磁盘、网络带宽、服务器的利用率、数据库的使用状况)
系统的容量:系统支持的最大用户数
系统的稳定性:系统是否可以稳定运行
系统的可扩展性:如果要进行扩容操作,系统可以支持
3.用户
使用起来是否舒适,相应速度非常快,稳定性好
4.性能测试人员
以上的层面都需要关注
当系统的性能无法达标时,关注引起系统性能的瓶颈
五、性能指标
1.并发用户数
业务层面的并发数:同一时刻,向服务器发送请求的用户数量
后端服务器的并发数:同一时刻,向后台服务器发送请求的用户数量
2.响应时间
用户发送请求到用户所期待的响应完全展示到前端,所用的时间
系统响应时间:服务器之间通信处理请求所需要的时间
3.事务的响应时间
系统中完成一个事务的平均时间
4.每秒事务通过数
TPS(Transcation交易,业务,事务 Per Seconds)
平均每秒处理事务的数量
5.点击率
每秒点击数,代表用户每秒向web服务器提交的HTTP请求的数量
点击率越大,服务器压力越大
6.吞吐量
单位时间内系统处理的信息量
TPS, HPS(HTTP Per Second)
7.思考时间
模拟用户操作的实际停顿时间
8.资源利用率
系统在运行的时候资源的使用情况,CPU、内存、硬盘、网络等
六、性能测试的方法
1.基准测试:了解系统的性能
系统的新版本,或者新接手的系统,需要进行基准测试,获得系统的性能指标,做为以后保持系统性能的基准
进行基准测试,不仅可以可以获取系统的性能指标,还可以会发现新系统的一些性能问题
2.并发测试
同一时刻,向后端服务器发送请求,测试系统的表现,看系统是否会因为用户量大而引起资源竞争,死锁等问题
3.压力测试
一般指后端里的测试,不断对系统施加压力,看系统在长期处于临界饱和的情况下,系统的稳定性,以及系统指标的变化
进行压力测试时,不断向系统增加负载,使得系统长期处于高负荷状态,看系统在这种极限情况下的CPU利用率、内存使用情况等其他指标
4.配置测试
系统配置在不同的配置上进行测试,找出能够使系统性能发挥到最优的配置
操作系统的配置 unix Ubuntu Redhat
数据库服务器的配置 读写,存储量大,
JVM配置
网络环境
服务器,内存,磁盘等
5.可靠性测试 24h甚至一周
验证系统长时间运行的稳定性
系统实际负载的70%左右,长时间运行,看系统是否稳定,指标是否稳定