关于全链路性能压测的 基本流程与方法
经常听到有人说 全链路性能测试,那到底什么是全链路性能测试呢?
个人的经验 有2个层面的含义:
1、从整个技术框架角度(基于各个中间件、数据库、服务器应用程序端、硬件等资源)来进行一场 全链路的 性能测试
2、从业务流 角度(基于业务的需求指标) 来进行一场 全链路的性能测试
我们做全链路性能测试都是为了解决一个问题:找出系统的性能瓶颈,同时评估系统的参数配置能力与系统处理能力。
全链路性能测试的 基本流程是什么?
1)、确定全链路性能测试的 边界范围(业务方面 主要测试哪些场景、技术架构角度 测试哪些中间件)
2)、梳理 测试指标(业务处理能力指标、中间件指标、系统处理能力指标、硬件处理能力指标)
3)、明确 测试环境需要的硬件服务器 或者 云服务器资源的 参数配置要求,沟通拿到 资源 部署 测试工具环境+测试服务器环境
4)、分工明确测试计划(人员分工明确各自的测试对象与测试工具清单、测试时间周期、测试脚本的生成规范、测试结果采集方式、测试结果的共享位置)
5)、在部署好 测试环境的基础上,我们首先 做基准性测试,通过基准性测试工具 测试我们的各大中间件及数据库的 基准性能并整理保存好 测试的 指标结果
6)、在我们的基准 环境配置下,利用 压测性能测试工具去构建脚本 根据测试场景 进行压测,采集测试结果
7)、结果分析 (根据测试的指标结果 与 基准性测试的指标结果进行比较 再与目标指标结果进行比较)
8)、定位瓶颈位置反馈给开发人员并让开发人员进行优化。
9)、开发同事优化好相应的瓶颈位置后,进行第2轮的测试验证
10)、形成性能测试报告
很多童鞋比较困惑的地方:
1、基准性配置测试 如何测?
1)我们需要 什么样的硬件配置、什么架构的中间件(主从单分片 还是 3主3从3分片)、数据量的容量极限(探索试探的方式去测试验证)
我们要选择 合适的 基准性测试工具,一般都会有官方的 基准性测试工具
2)然后 我们 拿基准性测试工具 去执行测试、收集测试结果
3)我们拿不同的基准配置 来分别测试,获取 想要的 基准配置 大于 目标配置的一个配置环境 来作为 测试与生产环境。
说明下:容量测试 可以在基准性测试里面体现出来。
2、如何定位性能瓶颈?
1)定位大节点
我们在客户端并发请求的过程中,监控数据流 在各个中间件节点的 性能指标 是否 大于 基准配置 测试的 指标,如果大于,说明 这个节点的中间件存在性能瓶颈。
如果小于,再 换另外一个数量级的 请求来 压测,看这个中间件里面的 性能指标 是否会随着 数量级的请求增加 而 变大;如果请求数量增加了,某个指标的数据 没有跟着变大,则检查该指标是否异常;做出优化处理。
2)分析性能参数指标
监控到 具体中间件或者 服务器应用程序的 指标 进行分析,明确当前指标的含义,这个指标的大小 会影响到 哪个地方的性能。
(
例如:kafka生产者指标
Request latency average
Producer(生产者)发送到broker(中间商)的平均请求延迟时间(毫秒),即发送上一批消息与 下一批 消息的间隔时间(平均延迟时间)
指标解析:
Producer 发送消息给 broker后收到响应确认后默认会立即发送新消息,但是为了提高吞吐量,会设置一个 延迟时间linger.ms。
batch.size这个producer配置项
并不是只要配置一个合适的值就可以一劳永逸了,要视情况决定如何选择一个更优的批大小。要记住,你所配置的批大小是一个上限值,意思是说,如果数据满了,就立即发送,但如果没满的话,最多只等linger.ms毫秒。
小的批量将会导致更多次数的网络通信,然后降低吞吐量,反之亦然。
)
3) 从全局角度来分析
①、在不同的数量级下请求 的 测试对比
②、在具体指标不同配置下请求 的 测试对比
③、在不同环境配置下 请求的测试对比
3、性能测试报告 怎么写?
1)要明确 查看这份测试报告的对象人员有哪些?
产品经理、项目经理、技术总监、项目组开发人员、项目组测试人员。
2)测试报告的内容标准
项目背景、性能需求目标、测试范围边界、测试工具环境、被测应用程序环境、测试分工表、测试周期表、测试脚本存放位置、测试执行过程记录、测试指标结果记录表、测试指标结果对比表与性能瓶颈分析摘要、性能优化任务开发处理人员表、测试最终性能评估结果总述。
3)测试报告的文档格式规范化
标题层级、段落格式(序号编排、段落缩进)、字体大小格式(标题字体大小、标题粗体、正文内容文字大小)、文档是以word存储还是PDF文件格式提交

浙公网安备 33010602011771号