浅谈常态化压测 | 京东物流技术团队

京东云开发者
• 阅读 142

一、常态化压测介绍

1.什么是常态化压测

常态是指:“正常的状态”;“化”在这里是表示转变为某种性质或状态。

“常态化”的含义就是:趋向正常的状态。

那么常态化压测顾名思义就可以解释为,让压测趋于正常的状态,趋于合理;因此通过调研给了如下定义:常态化压测是指在某个产品或系统上进行自定义周期(常态化)的、系统自动执行的、可验证结果的压测过程。目的是检测产品或系统的稳定性、可靠性和性能,确保它们能够在不同的场景下正常运行。

2.为什么要进行常态化压测

随着业务的不断增长,支撑业务系统的压力也逐渐增加,会面临如系统越来越厚重、逻辑越来复杂、迭代节奏越来越快等繁杂的情况。我们当前并没有做到在每次变化时快速识别出性能风险,检测产品或系统的稳定性、可靠性,而且我们还在不断的投入人力成本在压测这件事情上也是不合理的,所以我们要将性能验证融入到我们日常的工作中,把压测做到常态化,做成平常的一件事。

3.常态化压测的价值

  • 快进快出,最小单位安排压测任务,减少人员投入
  • 尽早识别性能波动,避免风险后置
  • 可复用性高,压测模型、业务模型可复用
  • 业务可用性保障

浅谈常态化压测 | 京东物流技术团队)

二、常态化压测实践

1.常态化压测流程介绍

借助泰山平台中的Forcebot工具,进行常态化压测执行。设置常态化压测任务,配置压测执行计划,按照预设的数据模型、基线值等进行执行。在累积一段时间的压测结果后,可以对基线值、压测目标进行调整和调优,然后继续进行自动化周期性的压测。同时跟进结果,及时关注最近业务和系统的变化。

  • 明确压测目标

明确常态化压测的目标,可以区分日常和极限两个场景。根据不同的场景设置不同的压测目标,第一次实践以单接口的日常流量为主,观测日常流量下的性能波动,确定正常范围值。

  • 常态化计划

根据接口的优先级,接口服务的流量,日常迭代代码改动的频率,设置对应的计划。核心接口、流量较大、代码改动频繁的接口,常态化压测的周期建议短一些,可以一周1-2次,且放在每次上线后进行;如果是非核心、流量小的接口,可以每周或每双周进行一次。

  • 压测前期准备

确定测试场景根据实际场景,设计压测场景,包括用户数量、请求类型、请求频率、请求参数等,以尽可能模拟真实的业务场景。编写压测脚本,设置按照真实请求数据比例设置参数化,以便于进行自动化测试。

  • 压测中期关注

在压测过程中,主要是无人值守的状态,所以需要提前识别压测可能带来的风险,以及面对不同的风险需要采取的措施。

同时还要关注压测过程中如果出现性能波动,系统发出的预警方式是否及时、预警内容是否准确。

  • 压测后期跟进

每次常态化压测计划执行后,都需要关注本次的结果:① 结果符合预期,则要关注下指标的波动; ② 若结果并不符合预期,则要刨根问底,找到问题的所在; ③ 跟进问题直到解决,解决后重新验证。

浅谈常态化压测 | 京东物流技术团队)

  • 辅助功能-流量染色

流量染色指根据流量协议,设置对应的流量染色规则,对指定的流量进行染色标记,并在整个调用链中携带该标记。

通过流量染色,可以实现压测流量隔离,同时可以保证日常压测对生产流量无影响。但是对于常态化压测来讲,流量染色并非必须,而是锦上添花的功能,可以进一步保证我们的流量对生产无影响。

浅谈常态化压测 | 京东物流技术团队)

2.首次进行常态化压测实践

2.1 准备阶段

① 获取基线值数据

浅谈常态化压测 | 京东物流技术团队)

② 压测脚本、场景、数据模型准备

③ 压测环境准备

④ 压测计划制定

2.2 执行阶段

浅谈常态化压测 | 京东物流技术团队)

浅谈常态化压测 | 京东物流技术团队)

浅谈常态化压测 | 京东物流技术团队)

浅谈常态化压测 | 京东物流技术团队)

2.3 调优阶段

以7-10天为一个周期,记录数据。不考虑特殊节日、特殊活动的场景,验证基线数据的可信赖性。如发现高于30%的概率,每天的数据都不符合基线值,可调整基线值的浮动范围,以保结证结果在日常值的范围内。

调优的过程也要关注,在数据统计过程中代码的改动,如果确定是代码的改动影响了整体的性能,这就要根据实际的场景和影响范围进行评估。

2.4 复盘阶段

经过一段时间的常态化压测,需要对整个流程和结果进行复盘,好的复盘结果能够帮助我们避免后续的一些“坑”。参与常态化压测的所有人员一起,主要关注一下几个方面:

① 数据是否正确,是否达标,是否可信赖

② 常态化压测流程、计划相关问题

③ 压测过程中的性能问题总结

三、常态化压测总结

① 建议覆盖场景 可以根据自己所负责的业务进行考量,如果不会出现很大流量的情况下,建议覆盖日常场景即可满足需求;如果需要考虑大流量并发的场景,建议覆盖日常的基础上,在覆盖极限的场景。

② 关注风险控制 常态化压测要做到的是模拟生产真实场景,实现日常自动化压测,尽量做到无人值守,所以提前识别出可能的风险是非常必要的,同时要列出不同的风险项对应的举措。

③ 常态化压测只是辅助验证业务性能的一种手段 不是说我们进行常态化压测之后就不需要进行性能测试了,两者之间是没有冲突的。

寄语:每个人负责的工作是不同的,不同人会有不同诉求,对同一件事也会有不同看法,不过苏轼有句话:“犯其至难而图其至远”,意思是说“向最难之处攻坚,追求最远大的目标”。只希望我们能在工作中克服各种困难,去实现最长远的、可持续的目标。

作者:京东物流 冯海艳

来源:京东云开发者社区 自猿其说Tech

点赞
收藏
评论区
推荐文章
京东云开发者 京东云开发者
11个月前
京东物流常态化压测实践 | 京东云技术团队
大促备战压测备战时间紧、任务多,压测备战压力较大,在大促备战多专项并行资源紧张情况下,频繁的系统调优给整个大促带来不可控的风险因素。引入常态化压测的手段,通过每周或每月的定期压测行为,持续把控系统性能表现,保证服务稳定性;同时将需求上线引起的性能问题前置暴露,及时定位优化问题;减轻备战压力,提升压测效率。
浅析大促备战过程中出现的fullGc,我们能做什么?
在日常压测和大促期间,经常会发生Jvm出现大量youngGc和部分fullGC的情况,导致性能下降,可用率降低等情况。
Wesley13 Wesley13
2年前
MySQL 5.6.35 索引优化导致的死锁案例解析
一、背景随着公司业务的发展,商品库存从商品中心独立出来成为一个独立的系统,承接主站商品库存校验、订单库存扣减、售后库存释放等业务。在上线之前我们对于核心接口进行了压测,压测过程中出现了MySQL5.6.35死锁现象,通过日志发现引发死锁的只是一条简单的sql,死锁是怎么产生的?发扬技术人员刨根问底的优良传统,对于这次死锁原因进行了细致的排
Stella981 Stella981
2年前
OceanBase数据库实践入门——性能测试建议
概述本文主要分享针对想压测OceanBase时需要了解的一些技术原理。这些建议可以帮助用户对OceanBase做一些调优,再结合测试程序快速找到适合业务的最佳性能。由于OceanBase自身参数很多、部署形态也比较灵活,这里并没有给出具体步骤。数据库读写特点压测的本质就是对一个会话的逻辑设计很高的并发。首先需要了解单个会话在
Stella981 Stella981
2年前
NoSuchMethodError 常见原因及解决方法
导读『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测、故障演练、JVM、应用容器、服务框架、流量调度、监控、诊断等多个技术领域,以更结构化的方式来打造稳定性领域的知识库,欢迎您的加入。运行时抛出NoSuchMethodError的根本原因是什么?在实际生产系统中,我们主
京东云开发者 京东云开发者
3个月前
大数据平台红蓝对抗 - 磨利刃,淬精兵!
背景目前大促备战常见备战工作:专项压测(全链路压测、内部压测)、灾备演练、降级演练、限流、巡检(监控、应用健康度)、混沌演练(红蓝对抗),如下图所示。随着平台业务越来越复杂,红蓝对抗的作用愈来愈明显,下面将详细介绍大数据平台在大促备战工作中是如何开展红蓝对
京东云开发者 京东云开发者
9个月前
CGLIB动态代理对象GC问题排查 | 京东云技术团队
一、问题是怎么发现的最近有个新系统开发完成后要上线,由于系统调用量很大,所以先对核心接口进行了一次压力测试,由于核心接口中基本上只有纯内存运算,所以预估核心接口的压测QPS能够达到上千。压测容器配置:4C8G先从10个并发开始进行发压,结果cpu一下就飙升
京东云开发者 京东云开发者
6个月前
谈谈压测方案的那点事 | 京东物流技术团队
前言在现阶段大促备战的压测不算是一件新鲜事,已经不存在什么技术瓶颈或者资源问题,每个团队都有很多人能够执行性能测试,在一些团队也已经落地了日常常态化,但压测也没有简单到只在压测平台上设置参数、运行脚本,然后去看压测报告中某个指标是否满足压测目标那么简单,我
京东云开发者 京东云开发者
5个月前
大数据平台红蓝对抗 - 磨利刃,淬精兵! | 京东云技术团队
一、背景目前大促备战常见备战工作:专项压测(全链路压测、内部压测)、灾备演练、降级演练、限流、巡检(监控、应用健康度)、混沌演练(红蓝对抗),如下图所示。随着平台业务越来越复杂,红蓝对抗的作用愈来愈明显,下面将详细介绍大数据平台在本次双十一大促备战工作中是
京东云开发者 京东云开发者
4个月前
【积微成著】性能测试调优实战与探索(存储模型优化+调用链路分析)| 京东物流技术团队
一、前言性能测试之于软件系统,是保障其业务承载能力及稳定性的关键措施。以软件系统的能力建设为主线,系统能力设计工作与性能测试工作,既有先后之顺序,亦有相互之影响。以上,在性能测试的场景决策,架构分析、流量分析、压测实施和剖解调优等主要环节中,引发对于系统能