微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpringCloud分布式系统全链路压测

前言

上一篇JMeter的基本使用介绍(使用Apache JMeter做压力测试),本文介绍如何做SpringCloud分布式系统的全链路压测。

测试策略

如上图,基本思路是基于月活跃用户确定执行的并发数,然后用工具模拟压力输出报告,最终我们关心的三个最重要的指标是响应时间、错误率、吞吐量。

吞吐量是反馈系统整体性能很重要的一个指标,也有几个衡量的维度,如QPS、TPS、网络收发的数据量,不同的系统应该采用不同的衡量标准,一般的业务系统会选取TPS,但也不一定客观,因为在系统跟系统横向对比的时候不一定能量化系统性能,因为实际的吞吐量受到调用栈、报文大小和网络环境等的影响,所以还是要因地制宜。

过程中要执行强弱并发压测、极值测试、数据翻倍测试来对当前的系统性能现状客观评估,并对未来长时间的运营提供足够建议。

核心目标

由于各系统在系统架构和部署方式千差万别,需要具体分析,设置好一个比较合理的标的是非常重要的。如某系统我们设置的核心目标是各场景在100并发下,超时率<=5%,单接口响应时间<=3s,总体吞吐量TPS >= 100。

可以先不论目标的高低、系统的优劣,只讨论测试本身,那么为了达到这样的目标,数据要翻倍,环境要监控,脚本要录制,另外很重要的是开发团队是要做一些配合修改的,大的层面可以从前后端调优、数据库调优、部署参数调优等各方面考虑。

技术选型

序号方案优点缺点备注
1LoadRunner1、高度自动
2、可推广性强
1、环境准备复杂,需要更长的环境准备时间
2、无法排除网络干扰(丢包的情况下压测不通过,无法生成报告,大并发量无法模拟)
优先考虑
2阿里云PTS1、不需要准备环境,可直接使用
2、可VPC内网连接测试环境,排除网络干扰,成功率高
1、需要购买资源包
PTS资费:预付费¥1,058.00/年(40万VUM)
3JMetter1、低成本,环境准备时间短
2、可推广性强
1、需要手动编排压测场景API,人力投入大
2、无法排除网络干扰
最终选择

如上,技术路线上,最终的选择是基于JMeter的各种控制器以及集合点的设置,模拟强弱并发和不同用户访问系统的情况。

报告输出

压测报告是承载系统性能现状很重要的体现,一个好的压测报告不仅要客观的反映现状,还需要提出合理化建议,体现出专业性和洞察力。

图1. 聚合报告

图2. 服务器资源采集

图3. 推导分析 

总结

分布式系统全链路压测重点:

  1. 测试策略:强弱并发、极值测试
  2. 衡量指标:响应时间、错误率、吞吐量
  3. 目标设定:各场景在xxx并发下,超时率<=x.x%,单接口响应时间<=x,总体吞吐量TPS >= xxx
  4. 技术选型和环境准备:JMeter足以应付绝大部分场景,注意Linux服务器CLI运行可以有效屏蔽网络干扰,环境准备上要留意测试环境的数据量,合理翻倍数据
  5. 报告整理:现状和未来,体现专业性和洞察力

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐