Tech
导读
压测是目前科技企业及传统企业进行系统容量评估、容量规划的最佳实践方式,本文将基于京东ForceBot平台在大促(京东618、京东双11)备战中的实践历程,给大家分享平台在压测方面的技术变革。ForceBot平台是一款分布式性能测试平台,能够为全链路压测构造千万量级的压测流量,并结合全域流量录制回放、瞬时发压、智能寻点等能力,为整站容量评估与规划提供一站式的解决方案。
01
什么是高保真压测
1.定义
高保真压测:通过仿真或真实流量回放方式完成对业务系统的生产集群进行压测评估的一种实践方案,能够从环境、流量、调用链路等方面得出接近真实的压测评估结果。
2.高保真压测的判定条件
全链路压测:资源层面看,被测环境=生产环境,这里唯一的区别在于流量路由的开关配置不同。
单系统压测:以机房或分组为最小被测单元,压测结束后不做任何资源上的调整直接接收线上流量。
流量录制:通过录制真实用户行为的流量,将其备份至离线流量文件中以便回放时使用。
业务配比模型:压测业务链路过长时,录制出的流量很难满足链路上各系统的业务配比模型,作为流量录制的补充可以通过还原真实业务配比模型,来模拟仿真的压测流量,以满足链路上所有系统对流量成分的需要。
流量回放:支持离线流量文件回放与实时流量引流两种压测方式,并能根据对流量的需求动态调整流量脉冲的大小;
流量模拟:根据业务配比模型对业务链路的入口系统进行流量模拟,以保证业务链路上的每个系统都能满足配比需求;
憋单压测:通过将生产流量在线上环境的异步(消息)节点特性形成蓄洪能力,待流量大小符合要求时开启泄洪对下游系统形成冲突以达成压测的效果。
02
高保真压测有哪些技术突破?
1.构造千万量级压测流量的性能测试平台
图一 性能测试平台架构图
压测平台核心要解决的是如何构造目标压测场景所需量级的压测流量,目前业界用途较广的压测工具Jmeter、Gatling、nGrinder等在单机发压能力、分布式、异步发压场景等方面都有各自的优势,以成为工具的核心功能被广大研发、测试人员认可,但当所需压测流量的量级达到十万或百万以上时,便需通过自研方式来打造能提供百万或更高量级流量的压测平台,这时我们打造的平台需要具备以下能力:
2.全域流量录制回放
高保真压测的核心在于如何构造真实的压测场景,线上真实用户行为的流量是最为真实的流量数据,所以为提升压测场景中的数据质量,流量录制回放技术便成为一个专项研究的内容,如何将线上流量无损的录制下来?通过什么样的技术手段进行录制?录制下来的流量又解决进行安全存储等等问题,下面会从公网流量、内网流量录制回放的解决方案进行详细的说明这些问题的技术方案。
图二 公网流量录制回放流程图
(1)公网流量录制回放全景
图三 公网与内网流量录制的差别
(2)公网流量录制原理
(3)内网流量录制原理
03
高保真压测在618/双11军演中的实践
通过对压测技术的不断迭代升级,使压测的效率与质量得到的进一步的提升,让容量评估工作的结果更真实可靠,通过近几年的全链路压测及日常压测的实践与沉淀,目前已支持各IDC机房内或机房间在同一时间段内在不影响生产流量的情况下开展压测工作,具体压测方案实现与取得的成果如下:
图四 高保真压测最佳实践
前已支持各IDC机房内或机房间在同一时间段内在不影响生产流量的情况下开展压测工作,具体压测方案实现与取得的成果如下: