文章目录
一、常见的性能问题
- CPU的使用率达到了100% ;
- 内存泄漏;
- 系统在用户量高峰期的时候不稳定,出现崩溃;
- 系统响应速度很慢;
- 出现线程死锁情况,资源分配不均等。
二、为什么要进行性能测试?
- 进行性能测试,确定这个系统的性能指标,作为性能测试的标准。
1、 查看系统是否满足使用的场景:
- 在非预期的用户数量下,系统是否稳定运行。
- 系统能够处理事物的数量。
- 在使用高峰期,系统是否可以快速响应用户的请求。
- 在预期和非预期的情况下,用户是否有良好的体验(响应快,不卡顿,画面正常)。
2、确定系统的容量(用户、数据)
3、确定系统的配置规划
三、性能测试流程
- 1、分析性能需求,确定性能指标。
- 2、根据性能指标来设计性能测试的场景(性能测试的过程)。
- 3、进行性能测试,获得性能测试报告。
- 4、分析性能测试报告中的指标和预期性能指标是否一致。
- 5、如果不一样,找出系统的性能瓶颈(个人经验),就是引起性能指标有问题的环节。
四、分析性能指标(确定性能测试的需求)
1、分析系统的性能需求
2、分析系统的关键业务
- 分析性能测试的关键业务有两个原则:用户频繁使用的业务(20% 的主要业务被 80% 的仍频繁使用)。计算量大的业务。
- 淘宝 APP 关键业务:
- 首页搜索
- 首页中,推荐喜欢商品功能
五、性能并发指标
1、并发数
- 同一时间向系统后台发送同一个请求的用户数。
2、响应时间
- 用户从发送请求到页面展示出请求的数据,这个过程所花费的时间。
- 分为 后台系统响应时间 和 前端页面渲染时间。
- 3/5/8 原则(3s最好,最慢8s)
3、事务响应时间
- 系统处理一个事物所需要的平均时间 (每秒 / 处理事务数)。
- 事务:一系列密切相关的操作的集合。
4、每秒通过的事务数(Transaction Per Second,TPS)
- 系统每秒处理的事务的数量。
- 举例:地铁站有10个检票机,乘客通过每一个检票机需要的时间是1s
- 事务:乘客通过每一个检票机,
- 有5个乘客时,每秒通过的事务数是多少? 5
- 有10个乘客时,每秒通过的事务数是多少? 10
- 有100个乘客时,每秒通过的事务数是多少? 10(最多每秒处理10个)
5、点击率(HTTP Per Second)
- 每秒向服务器发送的 HTTP 请求的过程。
6、吞吐量/率
- 一个系统单位时间内处理的信息量,tps,点击率,bytes/s
7、思考时间
- 事务或者多个操作里面的间隔时间
8、系统的资源利用率
- 在系统运行的时候,CPU占有量,硬盘、网络宽带、耗电量…
六、性能测试模型-理发师模型
- 理发师模型是解释吞吐量和响应时间的模型。在一家理发店,里面有3名理发师,每个理发师水平相当,每次给一位顾客理发需要10分钟。
人数(并发数) | 平均响应时间 |
---|---|
1 | 10 |
2 | 10 |
3 | 10 |
4 | 40/3 |
5 |
- 如果用户希望在10分钟内剪完头发,怎么做?----》增加理发师,或者提高剪头效率。
- 那么如何提高一个系统的吞吐量?----》选择框架提高算法的效率、选择并发效率高的框架、
七、系统性能不同角色的关注点
- 用户:响应时间、系统是否稳定。
- 开发人员:合适的框架选择、算法的效率、数据库的选择、是否存在资源分配不合理、内存泄漏情况。
- 运维人员:数据库服务器配置、系统服务器配置、7*24小时系统运行是否稳定、系统支撑最大的用户访问量。
- 测试人员:定位是哪一方面的问题。
八、性能测试的类型
- 性能测试的目的不同,采用的性能测试类型不一样。
1、基准测试
- 当一个新的系统开发完成后或者接手一个新的系统的时候,就需要了解这个系统的性能,需要进行基准性能测试。
- 基准测试要确定这个系统承受的最大并发数,响应时间、事务平均响应时间、每秒处理的事务数、吞吐量、点击率等等。
2、压力测试
- 使系统长时间处于高压(高并发)地状态下,来运行系统,查看系统是否运行稳定、是否存在资源分配不均、内存泄漏、死锁、各项性能指标是否稳定。
- 高并发,并发数量基本接近与系统所能承受的最大并发数,甚至高于系统的最大并发数。主要是寻找系统的瓶颈。
3、配置测试
- 改变系统的软硬件配置,进行系统的性能测试,来找到一定压力下系统最合理的配置。
- 硬件配置、数据库配置、系统部署的服务器(一般在 linux 系统上)、网络宽带。
4、可靠性测试
- 系统的压力处于系统所能承受的最大压力的60%~70%左右,长时间的运行系统(7*24小时),观察系统的出错率,以及系统的