
文章插图
性能 Profile在压测过程中,Rhino 平台还可以实时采集目标服务进程的性能 Profile,并通过火焰图的方式展示出来,方便用户进行性能问题分析和优化,如图 。

文章插图
4. 压测实践Rhino 压测平台是一个面向全字节跳动公司的,为了所有研发同学提供的一站式全链路压测的平台 。Rhino 平台的研发团队,不仅负责 Rhino 平台的研发任务,还会配合 QA&RD 来完成公司大型项目,重点业务的性能压测工作 。
4.1 重大项目支撑公司内重大项目的压测,Rhino 平台都会积极参与,全力支撑的 。其中,比较典型的项目有抖音春晚,西瓜百万英雄,春节红包雨等活动 。
其中字节春节红包雨活动,完成是由 Rhino 团队来负责和完成的 。字节春节红包雨活动是在春节期间,所有字节客户端发起的,诸如抽卡分现金,红包锦鲤,红包雨等一系列的超大规模的红包引流活动 。其流量规模巨大,流量突发性强,业务逻辑和网络架构复杂度高等等,都对 Rhino 平台提出不小的挑战 。
在春节红包雨活动中,所有用户流量都经过运营商专线接入到网络边缘的汇聚机房,然后经过过滤和验证后,再转发到核心机房 。其中各个 IDC 互为备份,其具体流量路线如图 。在这里,不仅要验证后端各服务是否能承载预期流程,还要验证各个专线带宽,各个网关带宽及转发能力,各 IDC 承载能力以及之间带宽等等 。
为此,我们将整个压测拆分成多个阶段,来简化压测复杂性,也降低压测问题定位的难度:
- 通过拨测/CDN 压测来分别验证各个汇聚机房的承载能力,带宽,以及网关性能 。
- 在各个汇聚机房部署压测 Agent,来模拟用户流量分布,来压测部署在核心机房的后端服务性能 。
- 单接口单实例压测,单接口单机房压测,场景化全链路单机房压测,场景化全链路全资源压测,分阶段来验证后端服务性能 。
- 最后会通过全网拨测,来模拟真实春节红包雨高峰期流量,整体验证全系统性能 。

文章插图
在这些大型项目的支撑中,Rhino 团队不仅学到了大量的业务和架构设计知识,还了解到业务研发同学如何看待压测,如何使用平台,帮助我们发现更多平台的问题,促进平台不断迭代优化 。
4.2 日常压测任务支撑日常压测支撑,也是 Rhino 平台非常重要的一项任务 。对于日常压测中遇到的各种问题,我们采用了各种方案来解决:
- 专人 Oncall 值周,一对一指导 。
- 详细完善的压测知识库,不仅介绍了平台如何使用,还包括压测如何改造,压测方案如何制定,压测问题如何定位 。
- 完善的性能培训体系:定期开展性能测试相关分享,并对于 QA&RD 团队,也会开展专业的压测培训 。
- 将线上流量逐步调度到目标实例上,来测试服务实例性能极限,并给出实例性能 Profile,分析出实例性能瓶颈 。
- 通过长期的流量调度,来观察服务实例性能变化,以监控服务性能的变化趋势 。
- 通过不同资源水位下的实例性能,来预估出整个集群容量 。完成对服务容量预估,以及线上风险评估 。
- 基于泳道化的流量调度,可以精确的预估服务集群容量 。
- 修改负载均衡中目标实例的权重 Weight 值,逐步调大该 Weight 值,将更多流量集中打到目标实例,直到达到设置的停止阈值 。

文章插图
4.4 常态化压测Rhino 平台目前还在公司内推行常态化压测,通过周期定时化的自动化全链路压测,来实现以下目标:
- 实时监控线上服务集群容量,防止服务性能劣化 。
- 实时监控线上链路容量,防止链路性能劣化 。
推荐阅读
- YARN 在字节跳动的优化与实践
- 胎心115
- 字节跳动自研线上引流回放系统的架构演进
- 算法血拼:Google+百度+Alibaba+字节+Tencent+网易+360+拼夕夕
- kb是什么意思啊?
- 字节跳动面试必会:快速选择算法,TopK问题最优解
- 肚子在跳动是什么呢
- 刷透近200道数据结构与算法,成功加冕“题王”,挤进梦中的字节
- 黑客教程——Padding Oracle Attack&CBC字节翻转攻击详解
- JAVA字节流、字符流、缓冲流、转换流、内存流、字符编码
