字节跳动服务端全链路压测体系随着字节业务的不断扩张,用户流量在不断提升,研发体系的规模和复杂性也随之增加。线上服务的稳定

全链路压测指的是基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。常用于复杂业务链路中,基于全链路压力测试发现服务端性能问题。

随着公司业务的不断扩张,用户流量在不断提升,研发体系的规模和复杂性也随之增加。线上服务的稳定性也越来越重要,服务性能问题,以及容量问题也越发明显。为了及时暴露服务的各种稳定性问题,我们了引入了基于线上全链路压测的工具、研发体系。

本文主要介绍字节跳动的服务端全链路压测体系,以及字节跳动各种业务的全链路压测实践。

下图一个典型的网络架构,用户请求通过CDN溯源,经过TTGW,TLB,AGW,然后才到达业务服务PSM。(TTGW是头条的高性能4层负载均衡网关,TLB是七层负载均衡服务,AGW是头条统一业务Api接入层)

场景分类

主要目的

典型场景

主要特点

能力验证

验证在给定的软硬件条件下,系统能否具有预期表现

当前服务已经部署了n台机器,能否支持50万用户同时在线访问

1、软硬件环境都已经确定

2、有明确的性能目标

3、需要根据业务场景来构造压测数据和请求

容量规划

春节活动需要X亿人同时在线访问,系统需要如何调试?(性能优化,设计优化,资源预估)

1、它是一种探索性测试

2、常用于了解系统现状

3、需要根据系统现状,对未来系统进行一个预估和规划

性能调优

主要用于对系统性能进行调优

系统响应越来越慢,此时该如何处理?

1、对于代码级的优化,单实例压测即可

2、对于系统整体设计优化,需要集群压测,保证集群负载维持在一定水位

缺陷发现重现

发现/重现性能缺陷

服务线程死锁,内存泄漏等

1、需要对性能问题分类

2、针对每类问题构造对应的数据和压测策略

性能基准比较

系统新版本的性能验证

新版本的代码改动,是否有降低了系统性能,是否符合上线要求

1、有版本性能基准

2、固定环境因素的影响

3、AABDiff

4、diff置信度

在网络架构图中,明确展示了各系统各司其职,它们分别负责将用户请求做相应处理并将请求流转至下游服务。因此,根据压测方案的目的,选择一个合理的压测目标,可以减少大量的压测工作,提高压测效率。

目的

压测目标

压测带宽

从CDN、TLB处发压

春节活动需要X亿人同时在线访问,链路带宽是否足够?

压测业务逻辑

从汇聚机房、核心机房、卫星机房的AGW和业务服务发压

用户零点秒杀,是否能够保障商品、订单等系统一切正常?

压测异步消息

从MQproducer处发压

异步消息队列是否能够满足高压力场景?

在字节内部,线下测试环境是不允许压测的,由于线下资源不足,与线上环境差异大,压测出来的结论并不能充分保证线上的性能情况。因此本文指的压测都是在线上环境的压测。下文将重点介绍字节的全链路压测环境。

为了区分线上流量与压测流量,使服务可以针对压测流量做定制业务逻辑,服务架构体系在服务框架与服务治理层面设定了压测标记。

目的:

原理:

生效条件:

为了强化压测流量的管理,服务治理体系引入了压测开关的概念。压测开关作为总控制,所有服务框架必须判断压测开关是否打开,若打开才能允许通过压测流量,若关闭则只能拒绝压测流量。

对于压测数据的存储,必须将线上数据与压测数据做隔离,否则会导致压测数据量过大影响线上数据正常存取。

它是一个多功能压测平台,支持多种场景、模式的发压。Rhino统一管理了压测任务、压测数据、发压机、压测结果。集成了Bytemesh、User、Trace、Bytemock、Bytecopy等多个系统。

Rhino压测平台支持以下能力:

无法复制加载中的内容

根据不同业务的场景、以及压测的方案,业务方需要制定不同的发压方式,以达到压测预期效果。下面将介绍Rhino平台提供的四种发压方式,业务方需根据自身业务特点,选择适合的方式发压。

Fake流量压测是指用户自行构造压测请求进行压测。Rhino平台支持HTTP、Thrift两种协议的Fake流量发压。

Fake流量模式适合针对请求参数简单的接口压测,同时也适合针对特定请求进行压测。Rhino平台会为每个请求注入压测标记。

典型场景:

为了支持更多的协议与更复杂的压测场景,Rhino平台支持了GoPlugin发压模式。

依赖golang的plugin功能,运行时加载plugin文件,并加以执行

GoPlugin发压模式适合灵活构造请求数据、支持自定义协议、支持自定义发压场景,相当于所有发压场景都可以通过代码实现。注意Rhino平台对于GoPlugin模式不会注入压测标记,用户需在插件内加上压测标记。

为了使压测更贴近线上请求,Rhino平台支持了流量录制回放的发压模式,平台经过线上流量采集、线上流量改写为压测请求、压测流量回放三个步骤,将线上请求回放到压测目标中。

依赖bytecopy的采集流量能力,要求服务已经部署到线上,开启mesh,且有流量可以采集。

对于服务维度而言,如果想测试服务能承载多少QPS,每个接口的QPS分布情况,流量调度是一个比较合适的压测方式。Rhino平台支持了单实例的流量调度模式压测。

scheduler修改被测实例的consul权重,使流量不断打到目标实例中,而其他实例流量相应的减少,保持服务的总流量不变。压测的请求完全来自线上流量,不使用压测标识,因此压测流量的流转、存储均保持线上模式。同时scheduler会监控目标实例的服务指标,当服务指标到达阈值后将停止压测,将consul权重恢复至初始值。

下面将上述压测方式在压测目标、压测场景、优缺点维度下做对比,方便业务方选择合适的方式用于压测。

压测方法

Fake流量压测

自定义压测(Plugin)

流量录制回放

流量调度

作用目标

集群或单实例

单实例

压测场景

单接口/多接口(场景/流量配比)

单接口/多接口(任何形式)

服务维度

应用场景

新上线的服务;

压测方案为明确性能优化计划;

线上/线上任意协议接口接口;

单服务复杂压测场景;

跨多个服务混合场景;

压测数据构造复杂,要求数据多样性强;

线上数据快速压测;

单实例容量测试

缺点

压测数据构造形式单一

对用户代码能力要求较高;

任务需要自行调试

需要线上服务有流量;

服务开启mesh开关;

线上流量充足;

单实例不能线性反应整条链路的性能;

为了使压测结果更准确、使被测服务在压测过程中更安全,Rhino平台开发了一套压测专用的报警监控体系。分为实时客户端监控、被测服务端监控、ms报警监控。

公司的服务监控体系是基于metrics的30s一次聚合,但是对于压测任务而言,意味着观察压测状态需要等待30s的延时,这基本上是不能忍受的。因此Rhino平台支持了发压客户端维度的秒级监控,使用户可以及时观察压测状态,当压测出现异常时可以立即停止压测。

实现方案:

Rhino支持服务端角度的全链路监控,包括服务监控、机器资源监控、上下游监控。目前使用的是grafana面板展示,将全链路每个服务metrics、机器influxdb数据聚合展示到grafana中。未来将使用Argos展示服务端监控数据。

此外,Rhino平台还支持监控ms告警规则,当被测服务或下游服务触发了告警规则后,压测任务便自动停止,防止造成线上事故。

1.监控分析

可以从发压客户端监控、被测服务端监控发现异常,异常主要包括:

2.Lidar性能平台

3.系统层tracing分析

1.服务的CPU陡然升高,RPC调用和consul、etcd访问频繁超时,以及goroutine数目大涨。

THE END
1.如何打造理想的两层装修设计?这样的设计存在哪些挑战?在打造理想的两层装修设计时,需要综合考虑众多因素,以实现美观与实用的完美结合。 首先,空间规划是至关重要的。要明确两层空间的功能分区,比如一层可以设置客厅、餐厅、厨房等公共活动区域,二层则可规划卧室、书房等私人空间。在规划时,需充分考虑家庭成员的生活习惯和需求。 https://house.hexun.com/2024-12-16/216202036.html
2.二层搭建攻略4种方式怎么选?公寓及商铺阁楼,主流搭建四种方式首页 推荐 关注 朋友 我的 直播 放映厅 知识 游戏 二次元 音乐 美食 清远景悦装饰 粉丝1338获赞1.1万 二层搭建攻略4种方式怎么选?公寓及商铺阁楼,主流搭建四种方式#搭建阁楼https://www.douyin.com/note/7390738248126975271
3.完整微服务架构搭建微服务架构设计完整微服务架构搭建 微服务架构设计 根据目前产品存在的问题,针对快速开发、海量用户、大量数据、低延迟等互联网应用的实际需要,通过对业务架构、系统架构、基础架构、技术架构进行分析,采用先进实用的微服务SOA架构重构智慧校园、数字化校园等产品,彻底解决系统解耦、性能低下等问题,而且支持云计算部署,可以满足高并发、https://blog.51cto.com/u_16213588/11824162
4.以财务公司为平台搭建企业集团司库体系的关键问题研究—以Z集团为(3)首次针对以财务公司为平台搭建集团司库体系,提出了需要国家监管层面进行的政策创新与突破,为引导监管层在促进国内企业集团搭建司库体系建设方面指明了改革方向。 二、研究基础 (一)司库理论及国内外发展历程 1.司库的基本概念及沿革 司库是资产负债管理的一个组成部分,指全部资金及其利率风险、流动性风险、汇率风险的http://www.kjlww.com/m/article-70254.html
5.中学教学质量评价方案(通用15篇)3.为各推进学校搭建交流学习平台,每年组织推进学校进行不少于一次的培训学习;组织专家对推进学校项目开展不少于一次的项目论证;每年对推进学校开展不少于一次的过程性指导,项目结束前开展不少于一次的成果提炼指导培训。 (二)基地学校 要加强自身已有成果的`深化研究和推广研究,在此基础上发挥辐射引领作用,对推进学校实现https://www.oh100.com/a/202212/5820921.html
6.铝合金脚手架搭设规范以及搭建方法详解当框架的横杆和斜杆都搭设好后,开始搭设平台板,平台板放在框架上,要注意平台板与框架连接到位,四个角都平衡地接触并且与框架牢固连接。 5、搭设第二层框架 搭设完平台板,第二层框架就可以搭建了,搭建第二层框架时,要将第二层框架举起,垂直对准第一层框架插进去,然后锁上安全扣。随后,第二层框架里边的横杆https://www.instantaccess.com.cn/industrynews/218.html
7.平潭“智能环卫”监管平台二期采购项目附件中旭置业(漳州)有限公司采用公开招标方式组织平潭“智能环卫”监管平台二期采购项目(以下简称:“本项目”)的政府采购活动,现邀请供应商参加投标。 1、备案编号:P-CJJYZX-GK-202105-B0067-IDN。 2、招标编号:[350190]ZXZY[GK]2021001-1。 3、预算金额、最高限价:详见《采购标的一览表》。 https://zfcg.pingtan.gov.cn/upload/document/20210707/f4e7d1eca6c648b89a59cbdeb245cdc9.html
8.小区的邻里空间,居民的“荆彩生活”:G社区闲置架空层蝶变之路通过参与式规划改造小区架空层空间,以公共空间为载体,搭建社区居民参与公共事务的平台,增强居民的社区归属感和主人翁意识。 (二)具体目标 1.通过组建1支小区规划众创队,搭建居民参与小区治理的议事平台。 2.通过开展“荷韵有约”议事协商主题活动,征集至少10个具有借鉴意义的建议,以参与式规划设计的方式形成1份小区http://www.360doc.com/content/23/0916/14/1096711299_1096711299.shtml
9.职工思想动态与分析(精选8篇)思想政治教育是企业发展的生命线,在煤炭行业不景气的环境背景下,职工的思想出现了较大的波动,因此企业要充分发挥思想政治教育的作用,积极搭建各种平台开展思想政治教育,以此提高职工的思想政治意识:一是企业要开展各种文体活动,通过文体活动达到思想政治教育的目的。例如企业通过开展“供给侧结构改革”的主体演讲,提高职工对https://www.360wenmi.com/f/fileegn78pf6.html
10.幻兽帕鲁怎么建2楼幻兽帕鲁搭建2楼方法幻兽帕鲁怎么建2楼?幻兽帕鲁中玩家需要将房子盖好才可以建造玩家可以休息的床,很多玩家好奇游戏中应该怎么操作才可以搭建出二楼。今天小编就给大家带来幻兽帕鲁搭建2楼方法。 幻兽帕鲁怎么建2楼 1、首先玩家将一层搭建好后,使用屋顶将头上的位置搭建完毕。 https://gl.ali213.net/html/2024-1/1307939.html
11.解剖研究范文11篇(全文)1.2 研究方法 取新鲜头颅进行甲醛血管灌注固定后,在10倍手术放大镜下显微解剖,显露皮下脂肪、筋膜、面神经的颧支与颊支,沿途寻找面神经颧支与颊支的分支,确定角神经,观察其与周围血管的位置关系,追踪角神经到皱眉肌、降眉肌及降眉间肌的入肌点,并记录角神经全程及入肌点的位置关系。 https://www.99xueshu.com/w/ikeyda7fyirm.html
12.达华智能:国泰君安证券股份有限公司关于公司发行股份购买资产并监事会同时应对董事会和管理层执行公司分红政策的情况及决策程序进行监督。 公司利润分配政策调整提交股东大会审议时,应当由出席股东大会的股东 (包括股东代理人)所持表决权的三分之二以上通过。公司除设置现场会议投票 外,还应当向股东提供网络投票平台。 6、存在股东违规占用公司资金情况的,公司应当扣减该股东所分配的https://stock.stockstar.com/notice/JC2015111000000295_86.shtml
13.许建领江涛魏明卿中全:职业教育数字化转型——深圳职业技术“人”在数字化转型中的首要作用;从教学理念及模式、课程及资源、教学方法及手段、教学管理及评价等方面突出教学数字化转型的中心地位;开展数字技术研发、数字技术应用研发、数字化社会服务,推进研发服务与数字化转型的双向助力;通过搭建平台、推进职业教育“走出去”、打造数字化实践教学品牌,将国际交流合作作为职业教育https://www.chinazy.org/info/1006/14950.htm
14.基于VMM方法学的系统级软硬件协同仿真验证AET其中系统验证平台中包含处理器CPU或DSP[2],并且采用软硬件协同验证方法。因此系统级软硬件验证比其他形式的验证更贴近真实环境,在仿真中可以观察到软硬件运行的所有情况,这样可以快速有效地定位问题并进行系统性能综合分析。但是系统级软硬件协同仿真验证也存在验证平台搭建周期长、编译仿真时间长和资源消耗大的问题。针对http://www.chinaaet.com/article/148793
15.项目工作报告(精选17篇)(二)分析整合学校资源,搭建实践活动平台 20xx年12月,课题组成员对学校资源进行了分析。我校拥有广阔的宣传阵地,比如宣传栏、校广播室,教师墙壁等。 (三)抓好教师培训,加强教研力度。 为了使课题研究落到实处,形成特色,我校十分重视师资培训。在培训中,我们坚持内培和外培相结合的原则,不失时机地到外地学习经验,拓https://www.fwsir.com/yanjiang/html/yanjiang_20230110100555_2224571.html
16.融资方案范文(通用13篇)xxx项目位于xxx,项目规划用地14511平米,建筑面积150700平米。项目包括地下二层,地上裙楼四层和塔楼三栋,总高99.8米,裙楼几何尺寸为95mx90m。1号楼为办公式公寓,2号楼为住宅(含部分拆迁户还建房),3号楼为四星级宾馆。项目规划用地性质为商业金融及居住用地,容积率≤8.29,建筑密度≤52.95%,绿地率≥15.8%。 https://www.yjbys.com/chuangye/zhidao/chuangyerongzi/582091.html
17.》小学数学错题教学与管理的研究》课题中期评估报告(王文娟)(1)聚焦教师错题教学,形成“二层三阶四步式”的错题教学策略。 (2)聚焦学生错题管理,探索“五环相扣”的错题管理机制策略。 二、研究过程与方法 (一)研究历程的概述 1.第一阶段——启动课题(2021年11月~2021月12月) (1)确定成员,成立课题组,理论学习,提升自我。 http://www.lhsx.tn.czedu.cn/html/article5520993.html
18.宿管部工作计划精选15篇举办第一次大型部门内部活动,对干事进行宿管部工作的培训,让其了解具体的工作目的、方法及特殊情况的处理技巧,同时让院系宿管部干事相互认识,相互了解,提高院系宿管部的凝聚力。 负责人:院宿管部正副部长,各栋楼长,五大系宿管部各正副部长。 培训人员:院系宿管部全体新干事。 https://www.cnfla.com/gongzuojihua/3124667.html
19.教科室工作总结精选20篇在学校过道开辟了教育专著导读专栏,为教师选择合适自己的阅读书目作指导。举办了“行走书香世界,追寻幸福阅读”教师读书论坛活动,为老师交流分享搭建平台。读书使教师的教育理念得到了进一步更新,增长了教师的见识,提高了业务水平,提升了教师的人格魅力。 (二)每周一次微学习,更新教师教育理念。https://www.pinda.com/zhichang/gongzuozongjie/222266.html
20.挖掘就业空间,提升就业质量理论思考二、研究方法 报告通过文献研究法进行理论梳理,运用实证研究法进行剖析,最后用统计分析法对影响因素做定量解剖。 (一)文献研究法:通过知网搜索大学生基层就业等相关文献数据库,对学生基层就业的最新状况进行分类梳理,通过收集基础信息,归纳相关理论,并总结出可借鉴的观点,形成较为系统的针对大学生基层就业的理论研究和实https://univs.cn/zx/a/fdy_bjtj_llsk/231128/1866004.shtml