性能优化之几种常见压测模型及优缺点 | 陈显铭

简介: 上一篇讲的是《性能优化的常见模式及趋势》,今天接着讲集中常见的压测模型。通过上一章我们大概知道了性能优化的一些招式,但是怎么发现有性能问题,常见的模式还是需要压测。

上一篇讲的是《性能优化的常见模式及趋势》,今天接着讲集中常见的压测模型。

通过上一章我们大概知道了性能优化的一些招式,但是怎么发现有性能问题,常见的模式还是需要压测。下面列举进行列举。

压测模型抽象


可以把压测模型抽象为上图的模型。

压测环境准备

  • 压力机资源

  • 被压测系统

  • 依赖资源(压测数据,第三方依赖)

压测策略准备

  • 压测需要达到的目标(比如期望达到的QPS,稳定性要求等)

  • 压测场景(业务场景选取、组合)

  • 压测策略(逐步加压、脉冲、并发量等)

压测执行闭环

  • 压力机压测

  • 分析程序收集压测数据(RT,QPS/TPS,成功率,错误,内存,IO等)专业的工具基本涵盖

  • 分析压测报告

  • 确定优化计划

  • 反馈到压测系统或者调整压测策略

线下压测模型




此类压测模型最多,也是最容易实现的。有技术实力、资源的公司,开发环境和压测环境是隔离的。

图中举例的是分布式系统结构的压测拓扑图,实线是同步调用,虚线是消息类调用。

此类压测方式,最容易操作,有如下优点:

  • 可以实现快速压测

  • 压测场景可以自由自定

  • 可以进行稳定性测试或者链路性性能回归

但是从执行来看缺点也很多

  • 仿真度不高

  • 环境部署复杂

  • 多个压测任务一般不能并行

环境问题永远困扰你

比如仿真度问题,环境问题永远困扰你

  • 依赖系统可能缺失

  • 数据可能确实

  • 使用的机器,网络,DB都和线上不一样。

  • 服务化后,线上各应用是集群部署,比如A可能是1000台,B可能是100台,是10:1的比例关系,但是线下一般是1:1,这个比例是失真的。

线上引流压测模型


此类压测模式是使用比较多的高仿真压测。

有如下优点:

  • 真是的业务场景测试

  • 可以按需缩容

  • 可以快速回退

缺点也有:

  • 对链路节点压测不了(DB流量可能不够,网络节点等)

  • 很难进行超出业务流量的压测

  • 很难评估链路性能

线上引流压测是不错的压测模式,关键技术有

  • 流量的控制能力

    可以按需切换流量,web层诸如使用ngnix,服务和服务调用之间也需要按需切换。如果为了是自己对流量控制能力更强,都建议在需要控制的各层,加入代理层,这个代理层可以实现路由算法,通过调整路由算法,到达控制的目的。比如可以扩展ngnix的模块,如果是dubbo,可以扩展服务调用的寻址逻辑。

  • 服务监控能力

    如何在线上压测快速识别压测情况,如果压测是单台机器,登陆一台机器当然可以确认情况,但是如果有一堆机器,怎么办?必须自动化掉,监控核心指标。

服务化后的系统使用普通的线上压测模式很难发现链路问题,所以现在有如下进阶的压测模式,外部也应该分享过。

线上全链路压测模式



现在阿里体系,已经实现了此类压测模式,用于对大促等爆发流量进行模拟。使用完全真实的线上环境,进行高仿真的线上压测,可以按照线上真实的容量部署情况进行链路压测。

优点:

  • 高仿真

  • 按需的压测流量(可以构造比日常容量大得多的请求量)

缺点:

  • 实施成本很高,一般的公司可以不这么玩,前面的方式已经够了。

其他

这几种模式主要就是现在使用的模式了,可能有变体,我想不会差的太大。

压测的时候还有些注意点,诸如小心压力机的瓶颈;现在使用的比较多的工具是jmeter等。这些就不详解了。


作者:征途小丘,陈显铭,蚂蚁金服技术专家,分享性能优化的常见模式及趋势

原文链接:性能优化之几种常见压测模型及优缺点

目录
相关文章
|
8月前
|
存储 关系型数据库 测试技术
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
本文深入解析PostgreSQL分区表的核心原理与优化策略,涵盖性能痛点、实战案例及压测对比。首先阐述分区表作为继承表+路由规则的逻辑封装,分析分区裁剪失效、全局索引膨胀和VACUUM堆积三大性能杀手,并通过电商订单表崩溃事件说明旧分区维护的重要性。接着提出四维设计法优化分区策略,包括时间范围分区黄金法则与自动化维护体系。同时对比局部索引与全局索引性能,展示后者在特定场景下的优势。进一步探讨并行查询优化、冷热数据分层存储及故障复盘,解决分区锁竞争问题。
1076 2
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
459 1
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
424 4
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
370 5
|
Web App开发 前端开发 测试技术
性能测试分层模型以及前端性能测试工具介绍
性能测试分层模型以及前端性能测试工具介绍
267 0
|
测试技术
性能测试过程及模型构建
在性能测试过程中,建模实际上可分为两个过程,性能测试过程和模型构建过程,性能测试过程主要完成对系统进行性能测试,并搜集相应的测试结果,形成测试过程文档;模型构建主要是根据搜集到的性能测试需求和生产系统的相关信息完成性能模型的构建工作,并指导性能测试过程以及测试结果的生成。
1285 0
|
缓存 测试技术 数据处理
性能测试知识科普(六):三大模型
在性能测试工作中,业务模型、流量模型和数据模型是至关重要且必须在项目中构建的,否则很可能导致测试的场景和实际差距很大,测试结果也无法为性能分析和优化提供足够有说服力的支撑。为了便于大家理解三大模型
性能测试知识科普(六):三大模型
|
存储 SQL 缓存
全链路压测(13):高可用和性能优化
业务场景复杂化、海量数据冲击下,发现并解决业务系统的可用性、扩展性以及容错性问题。
全链路压测(13):高可用和性能优化
|
缓存 监控 NoSQL
全链路压测(8):构建三大模型
单机单接口的压测,可以通过梯度增加请求的方式,观察随着请求的增加,其性能表现&资源损耗的变化。在目前的微服务架构下,整体链路的性能瓶颈,取决于短板(木桶原理)。因此,单机单链路基准测试的目的,是在全链路压测开始前进行性能摸底,定位排查链路瓶颈。
全链路压测(8):构建三大模型
|
运维 监控 安全
性能测试从零开始实施指南-场景模型篇
需求不明确导致无法对测试点&测试场景进行详尽完善的分析,最终的测试结果与实际需要的结果差距很大,无法对瓶颈定位和线上容量规划提供精确的参考;
性能测试从零开始实施指南-场景模型篇