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

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

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

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

下图一个典型的网络架构,用户请求通过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.STM32连接阿里云,OneNET(MQTT协议)详细教程stm32mqtt1.搭建云平台设备 阿里云 https://www.aliyun.com/?accounttraceid=5df262f1b2db40f2b26ca21fd1f026bdgwje 链接 创建视频以及物理模型 https://pan.baidu.com/s/1AsllLqDd1MljFonIWpKUxw?pwd=XZY0 1.1.平台选择 1.2.创造产品 1.3.创造设备 https://blog.csdn.net/herui_2/article/details/124878082
2.线上教育平台搭建(H5快速搭建APP)线上教育平台搭建(h5、快速搭建、app),线上教育搭建模式玩法,yixun-apr168,线上教育搭建商城app开发 零基础搭建在线教育网校平台的三种方式:自己开发程序、购买现成的程序或入驻第三方平台。 1、自己开发搭建的优点在于可以量身定制。根据自身特点进行功能等搭建。如果教育机构自己组建技术团队开发程序,无疑能大的满足自https://product.11467.com/info/13929954.htm
3.如何搭建一套卖课平台搭建一个卖课平台,需要一个稳定高效的三层架构,包括前端展示层、后端逻辑层和数据存储层。 1. 系统架构图 2. 核心技术选型 后端语言:PHP(Laravel、ThinkPHP) 前端框架:Vue.js、uni-app(用于H5、小程序的多端开发) 支付系统:微信支付、支付宝支付,支持在线支付和小程序支付。 https://www.jianshu.com/p/110e40f83321
4.电商运营方案(通用17篇)(二)社区与互联网结合,打造平台、搭建互联网平台 建立一个社区虚拟网店,目标是把社区实体店打造成送货提货体验交互中心,把订单转移到线上,以网络为面,覆盖更大的销售区域和服务范围,并实现线下体验线上购买。 前期可以把目标用户群体锁定在“妈妈”上,这个群体是特殊的一类客户,她们比较关注食品安全,且她们的关系链https://www.ruiwen.com/yunyingfangan/6202039.html
5.如何搭建一个受欢迎的直播平台?图片教程的步骤详解图片教程的步骤详解一、前期规划与准备在开始搭建直播平台之前,首先需要对市场进行深入了解。这是确保平台能满足用户需求并成功吸引用户的关键一步。了解目标用户群体的特点、喜好和需求,以及当前市场上的竞争对手情况,都是必不可少的。二、明确平台定位根据市场调研结果,明确平台的定位。是面向娱乐、教育、游戏还是其他https://www.qdfuji.com/syzx/1757060.html
6.如何快速搭建直播平台?教程视频详解带你走遍全流程的疑问在当今的互联网时代,直播已经成为了一种非常流行的娱乐和营销方式。为了满足市场需求,许多企业和个人都想要快速搭建自己的直播平台。那么,如何快速搭建直播平台呢?下面,我们将通过教程视频的形式,详细解析直播平台搭建的全流程。 一、前期准备 在开始搭建直播平台之前,我们需要进行一些前期准备工作。我们需要明确我们的直播http://www.51sdskany.com/zxshoyoux/17151.html
7.什么是云平台云平台的定义企业如何搭建云平台星云联动非常的简单。企业可以用一些平台搭建的工具,比如就星云联动可以搭建云平台的: 1.网站前端——平台官网,展示企业产品,支持自主下单、在线交付,提供官方服务入口,提升企业形象。 管理后台——一站式站点配置,集成生产、产品、备案、财务、工单、会员等模块为企业管理提供综合运营支持。 https://www.istarscloud.com/electricity/2553.html
8.搭建企业直播平台的目的和意义是什么?企业直播平台的搭建对于现代企业来说具有重要的意义和价值。本文将介绍搭建企业直播平台的目的和意义,包括增强企业形象、提升内外部沟通、扩大品牌影响力、拓展营销渠道和提升员工培训效果等方面的优势。 1、增强企业形象: 企业直播平台可以为企业提供一个专业、高效的沟通和展示平台,通过直播形式展示企业的产品、项目、活动https://www.263.net/blog/4652.html
9.搭建电商平台网站的目的和意义搭建电商平台网站的目的和意义 电商系统给人们的生活带来了巨大的变化,促进了经济的发展,提高了消费水平.电子商务也是国际贸易发展的必然趋势,随着国际电子商务环境的规范和完善,中国电子商务厂商必然走向世界,这也是进一步扩大对外经贸合作和适应经济全球化,提升中国企业国际竞争力的需要。企业要想更好地发展,提高经济效益https://www.92hi.com/news/4927.html
10.搭建地方最权威O2O生活平台3、培训和晋升:全方位培训赋能体系+广阔平台、发展线路广。 4、全日制大专及以上学历优先 5、工作时间: 时代广场店:两班倒班 早8:30-17:30晚12:00-20:00 电信厅合作店:早8:00-18:00 电话:18545222210(微信同步) 平台发布莹 全文 +3 33秒前刷新查看详情 https://www.lzhxxw.top/
11.如何搭建自己的私有云平台腾讯云开发者社区搭建私有云平台是一个复杂的过程,需要考虑多个方面的因素。以下是一些关键步骤,可以帮助您开始搭建自己的私有云平台: 1. 确定目标和需求:首先,您需要确定您的私有云平台的目标和需求。这包括您希望使用私https://cloud.tencent.com/developer/information/%E5%A6%82%E4%BD%95%E6%90%AD%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84%E7%A7%81%E6%9C%89%E4%BA%91%E5%B9%B3%E5%8F%B0
12.立足广西服务东盟我院中国—东盟跨境医疗合作平台正式发布医疗需求是世界各国人民的共同需求。中国-东盟跨境医疗合作平台的搭建与运行,将进一步密切中国-东盟国家人民之间的联系,为东盟各国民众看病就医、健康管理提供一条便捷路径,对于增进各国民众健康福祉具有重大意义,同时,该平台的搭建与运行也是构建人类命运共同体的具体举措之一,能更好地服务于“一带一路”倡议。https://www.gxmuyfy.cn/news/newsyydt/4781.html
13.银豹商圈平台银豹开发商圈管理平台工具,助力同城生活和商户创业,商圈平台搭建商可利用银豹商圈平台工具将各行业门店商家聚集整合,形成一个多业态营销平台;现有各行业的银豹商户也可通过商圈平台搭建商入驻当地商圈,在平台上开店经营;搭建商在银豹商圈管理平台上架店铺,设置店铺抽成,装修上线商圈;消费者可进入商圈平台找商店、找商品、找http://blog.pospal.cn/kb/4141/
14.规划和二〇三五年远景目标纲要中期评估报告2023年是贯彻党的二十大精神的开局之年,是实施“十四五”规划承上启下的关键一年。根据“时间过半、任务过半”的要求,开展《繁昌区国民经济和社会发展第十四个五年规划和2035年远景目标纲要》(以下简称《纲要》)中期评估工作。评估重点为发展目标和重大任务中期完成情况,在此基础上分析《纲要》执行过程中存在的问题,https://www.fanchang.gov.cn/public/content/38995320
15.教大家如何搭建属于自己的网站平台工具/原料 网站上传软件 选择一个开源程序 方法/步骤 1 首先要挑选一个开源的网站程序,这个很重要,这个直接关系你想要搭建的是什么样的平台是商城,论坛,博客,门户,导航还是其它,这也是看你想要做什么方面的内容了,想好了再做,争取不要再改变 2 然后就是需要一个域名,这个是必须之一,这个域名的申请,我https://jingyan.baidu.com/article/ce09321b5d007e2bff858ffb.html
16.禅意方块搭建游戏《灵魂桥接》5月23日同步上线PC与主机平台由中子星游戏研究所开发、indienova发行,使用方块搭建起连接两岸心灵之桥的禅意休闲游戏《灵魂桥接》将在2024年5月23日登陆Steam,Nintendo Switch及PlayStation 4 | 5平台。 Steam国区定价19元,首发限时9折优惠。 创意桥梁搭建:物理与智慧的结合 《灵魂桥接》的灵感来自俄罗斯方块,但没有消除机制,玩家需要使用不断生https://m.3dmgame.com/news/202405/3895234.html
17.怎样搭建一个好用的框架协议采购电子化平台?(353期)第二阶段是框架协议采购自身独有的,其电子化平台的搭建也因此比较复杂。电子化采购系统要能够支持二次竞价和顺序轮候方法的运行,比如,发布二次竞价公告、接受入围供应商参加二次竞价,实时展示入围供应商轮候顺序,发布二次竞价和顺序轮候的每一笔成交结果公告,以及向非入围供应商采购的每一笔成交结果公告等。此外,还需https://www.caigou2003.com/web/audio/20220426/571407554391965696.html