【网易易盾】网易易盾性能测试自动化建设
创始人
2025-05-28 11:53:04
0

性能测试简介

什么是性能测试

考虑到有些同学没有接触过性能测试,这里还是简单介绍下。性能测试是通过特定的方式对被测系统按照一定策略施加压力,获取该系统的响应时间、吞吐量等性能指标,来检测系统上线后能否满足用户需求的过程。通过性能测试的定义不难看出性能的核心指标就是我们经常挂在嘴边的 QPS 和 RT。

为什么要做性能测试

简单了解性能测试之后,有些小伙伴肯定会问为什么要做性能测试。对于这个问题,我打算举两个生活中的例子来说明下。

  • 12306——每年春运都是一次大考

临近春节,打工人都要抢回乡的火车票,2019 年 12 月 23 日,有大量网友反映,12306 网站突然崩了,在购买车票的时候出现无法登录、无法购票、车次加载失败、页面卡住等情况,疑似因访问流量过大而出现服务器崩溃。

  • 微博——顶流明星的瓜不好吃

2021 年 4 月 23 日,知名演员赵丽颖与冯绍峰离婚的消息突然公布,这一消息迅速登上微博热搜。该消息公布后,有网友反映微博客户端出现了短暂宕机、网络出错的现象。

易盾性能测试痛点

压测执行过程繁琐

压测执行在易盾性能测试的整个流程中比重最大,易盾线上压测一般采用梯度压测。什么是梯度压测,简单的说就是把压测的大目标拆分成多个小目标,从小的目标做起,直到最后完成最终目标。假设易盾文本检测压测的目标值是 QPS 达到 200,那我们通常从压力值 20 开始,然后 40、60 逐渐加大压力,直到最后完成 200 的目标值。

具体的执行步骤是怎么样的呢,我们先用压力值 20,在 NPT 压测平台创建一个压测任务并执行,一般一轮压测执行 10 分钟。如果达不到 20 的目标值,压测中止定位性能问题;如果达到 20 的目标值,创建下一个目标值 40 的压测任务,继续执行。重复之前的判断逻辑,直到压测中止或者完成压测目标。

可能有人会问,你这不是自找麻烦,直接用 200 去压测看看行不行不就完事了。线上压测,保证线上安全始终是第一位的,需要慎之又慎,如果因为压测把线上压挂了会严重影响客户体验,甚至产生资损。

监控依赖人

在性能测试过程中,监控&分析属于一个难点,到底难在哪里?这里需要人的经验,需要对被测系统比较熟悉。只有在熟悉的前提下,你才知道需要看哪些监控指标,这些指标是不是正常,进而给出判断的结论。

目前线上压测会安排值班同学观察监控,这种依赖人的监控很难做到实时,因为人的精力有限,根本没法兼顾所有监控。还有就是很少有同学从头到尾盯着监控的,大家都是有报警的时候去关注下。这样存在一些风险,可能有些报警没有配置、或者配置修改了没有及时还原,导致线上有问题了,没有报警发出来。

在压测过程中,我们经常会遇到加大并发 QPS 上不去的情况,这时候一般就出现性能瓶颈了,但是这个瓶颈在哪里就需要根据监控数据去定位和分析了。我们在定位的时候无非也是使用经验的三板斧,CPU/内存/磁盘/网卡等系统资源是否正常,请求量和 RT 是否合理,有没有出现超时等异常错误。

压测数据未隔离

由于压测流量和真实流量没有做数据隔离,导致线上无法进行全链路压测,有些业务场景覆盖不到。比如易盾存储场景,一旦数据落库存在性能问题,kafka 的数据就会积压。此时 kafka 的 topic 中既有真实流量又有压测流量的数据,就算立马停止压测,也会影响线上真实流量数据的消费速度,影响用户体验。因此,平常线上压测都会关闭数据存储。

压测资损

易盾有一些外部供应商,之前压测过程中,由于方案评估不到位遗漏了供应商这个环节,导致线上压测产生了一些额外的费用,这种压测资损也是不能容忍的。

易盾性能测试自动化实践

压测一键执行

创建压测任务的时候,自动创建多个梯度压测子任务。还是用易盾文本检测来举例,我们创建一个 QPS 目标值 200 的压测任务,这个压测任务被拆分成了5个梯度,每个梯度的压测目标值从小到大分别是 40,80,120,160 和 200。这 5 个梯度对应 NPT 平台上 5 个压测目标值分别是 40,80,120,160 和 200 压测子任务。

点击启动压测任务后,系统会顺序执行 NPT 平台上 QPS 目标值 40,80,120,160 和 200 的压测子任务。压测子任务达到目标值,会自动执行下一个子任务,如果达不到目标值,就会自动中止压测任务。

监控&分析量化

对于监控&分析我们的思路很明确就是量化。

首先是监控,我们事先定义好哪些应用需要纳入监控,这些应用各自需要监控哪些指标。这个两个要素搞清楚了,剩下的就是通过哨兵提供的API获取监控数据,写入我们自己的数据库。

对于外部供应商这种特殊业务场景的监控,我们在易盾监控大盘纳入供应商请求量的指标。当供应商请求量同比或者环比出现异常时,需要及时停止压测。

全链路压测组件接入

存储场景压测覆盖不到的问题如何解决,首先我们的被测系统接入了全链路压测组件,实现了真实流量和压测流量的数据隔离。

其次,影子队列消费提供开关,kafka 数据积压时,关闭开关,保证只有真实流量数据的消费。

易盾性能测试自动化平台

对于上述性能测试中的改进点,我们构建了自己的性能测试自动化平台来承载。

整体架构

落地情况

易盾文本检测压测目前已经完成小流量的试跑,和之前的常规压测比,具有明显的优势。

未来规划和展望

可视化

压测过程中提供数据和监控大盘,有助于全局了解被测系统当前的状态。

智能化

监控数据目前比较粗暴,P0 的应用全部落库。后续可以根据压测场景-链路拓扑,只收集压测流量经过的应用。

监控数据合理性的判断目前都是一些固定阈值,后续可以把历史数据纳入比较,形成置信区间的算法。

相关内容

热门资讯

安卓手机系统流畅版,极致性能与... 你有没有发现,最近你的安卓手机用起来是不是特别顺滑?没错,就是那种点屏幕就立刻响应的感觉,简直让人爱...
forest安卓系统换到苹果,... 你有没有想过,手机操作系统就像是我们生活中的不同道路,有时候,你可能觉得一条路走得太久了,想要换一条...
华为鸿蒙系统安卓平板,开启智能... 亲爱的读者们,你是否也像我一样,对科技圈的新鲜事儿充满好奇?今天,我要和你聊聊一个最近在科技圈掀起波...
安卓系统藏族软件下载,精选安卓... 安卓系统藏族软件下载:探索藏族文化的数字新篇章在数字化时代,手机已经成为我们生活中不可或缺的一部分。...
显示安卓系统耗电大,深度剖析原... 手机电量总是不够用?是不是觉得安卓系统耗电特别大?别急,今天就来给你揭秘安卓系统耗电的秘密,让你手机...
抽取原装安卓系统驱动,深度挖掘... 你有没有遇到过这种情况?手机里的安卓系统突然卡顿,或者某个应用突然罢工,这时候你是不是想给它来个“大...
安卓系统手机游戏排行,热门游戏... 你有没有发现,最近你的手机里是不是又多了一款游戏?没错,安卓系统手机游戏排行又更新了!今天,就让我带...
安卓系统叫AR 特效,安卓系统... 你知道吗?最近在安卓系统上出现了一个超级酷炫的新功能,它就是AR特效!是不是听起来就让人兴奋不已?那...
安卓系统特有的功能,解锁智能生... 你知道吗?安卓系统这个家伙,简直就是智能手机界的“全能选手”。它不仅拥有丰富的应用市场,还能给你带来...
iqoo 安卓系统王者跳帧,王... 最近有没有发现你的iqoo手机在玩王者荣耀时突然卡顿,画面跳帧,简直让人抓狂啊!别急,今天就来给你揭...
安卓系统平板画图,创意无限的艺... 你有没有想过,用平板画图竟然也能这么有趣呢?尤其是当你手握安卓系统平板的时候,那感觉简直就像拥有了整...
安卓系统韩文变成中文,安卓系统... 你是不是也遇到过这种情况?手机里突然冒出了韩文,而你却一头雾水,完全看不懂?别急,今天就来给你详细解...
国内邮箱注册安卓系统,轻松掌握... 你有没有想过,为什么你的手机里会有那么多邮箱呢?是不是每次注册新账号,都感觉像是在进行一场数字版的“...
苹果系统和安卓系统合作,跨界合... 你知道吗?最近科技圈可是炸开了锅,因为苹果系统和安卓系统竟然要联手合作啦!这可不是闹着玩的,两个在智...
安卓系统怎么篡改位置,轻松伪装... 你有没有想过,手机里的位置信息竟然也能被篡改?没错,就是那个我们平时用来导航、找餐馆、定位好友的安卓...
kindle 刷原生安卓系统,... 亲爱的读者们,你是否也有过这样的经历:拥有一台Kindle,却因为系统不够流畅而感到烦恼?别担心,今...
安卓点歌系统连电脑,打造个性化... 你有没有想过,你的安卓手机里的点歌系统竟然可以和电脑无缝连接呢?这听起来是不是很神奇?没错,今天就要...
那个电视搭载安卓系统,智能娱乐... 你有没有想过,家里的电视竟然也能搭载安卓系统?没错,就是那个曾经只存在于手机和平板电脑上的操作系统,...
安卓系统反黄软件,净化网络环境 你有没有发现,随着智能手机的普及,我们每天的生活越来越离不开这个小小的屏幕了。但是,你知道吗?在这个...
安卓怎么测试系统好坏,安卓系统... 你有没有想过,你的安卓手机是不是真的像你想象中那么强大呢?别急,今天就来给你揭秘,怎么测试安卓系统的...