热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

多线程压测_CBU20181218大促压测大图回顾

同学,你想了解的CBU大促全链路压测吗?背景篇大促,大家肯定不陌生,双11、双12,CBU一年三次的大促大家或

同学,你想了解的CBU大促全链路压测吗?

背景篇

        大促,大家肯定不陌生,双11、双12,CBU一年三次的大促大家或亲身经历,或间接参与,大促文化早已深深融入在每一个阿里人的血液中。CBU大促逐渐常态化,为保证大促系统的稳定,质量团队主导的全链路压测也在跟随着大促的脚步一步步改进,为大促保驾护航。全链路压测是一个系统工程,需要各业务线团队开发,测试合力完成。压测过程中也会用到诸多工具来提效。下面分别就压测的各个环节来介绍大促压测我们现在是怎么做的。

数据构造篇

      压测过程中会产生大量的压测数据,这些数据是不能写入到线上的数据库表上的。所以需要构造影子链路,压测过程放到影子链路上就能避免数据混乱。那影子链路是如何构造的,如下图所示,链路的各层完成改造后,在访问的链接上带入压测标tb_eagleeyex_t=1。

731f2da4be06b8bfa9cc1b5fcd8c3b0d.png

9c029af1f90911797d87947e430c510e.png

4e4f59cf1d1a2f90def03c453a550c23.png

        DB里的影子表和影子数据是通过集团f11平台构建,如何上手该工具,参考ATA文章。做法是将真实表同步一份有前缀__test_表名,然后通过工具将真实的数据做一个偏移得到影子数据。这里要注意几点,有些数据是按照member_id取模做分库分表规则的,这时候需要注意分库分表的规则是不是和现实的一致;还有部分数据需要另外的写入缓存,这时候需要借用hsf平台打开影子表开关,来完成写入。

模型设计篇

        压测模型设计,直接关系着压测准不准确,模型的设计其实是压测方法论最核心的一环。模型的设计可以分为宏观和微观两个方面。宏观看总体的放大因子,场景的流量放大,微观关注具体的应用接口。

        宏观把握整体:大促预估的总买家数,会员UV,部分场景引流,新业务场景(此部分难以评估)。那这里整理了本次1218大促的一些数据作为参考例子,下图是1218大促的目标。

9904f30f93e5074c21d9262b9812bd56.png

        鉴于920大促的时候全站会员UV和买家数已经达到1200W和200W,对于这次大促的目标,大促压测在制定压测宏观放大因子是按照1700W的会员UV和215W的买家数来评估,具体的数据如下图:

aa44cf331313036da344b8ac8edc03a2.png

2e6846a93bb97638c69485d95e936845.png

        为什么要预估1700W的会员UV,主要有两点。第一是压测的预估会员UV一般都会比目标会员UV略高;第二是920大促预估的压测会员UV已经有1400W了,考虑到C端用户的历次大促增长,对比往届的数据,预估到1700W的会员UV比较保险。而最终的数据也和压测预估值非常接近。

9b3fe8c7d2e2df73e08e3369ba9041c8.png

014cf7ea9af1412dcb93d06e3e6d4823.png

        通过会员UV值来评估大促总体的放大因子,目前使用的是本团队开发的容量评估工具。通过工具可以计算各端的大促的放大因子,工具的使用方法请参考这里。

本次大促的放大因子详情如下:

f7c49a3f91d64b6de78ebc0216de42b4.png

各端的流量占比:

4a4944b37bc60968d4a3480198906858.png

        在微观层面,就需要下沉到应用接口级别了。不同的应用在设计压测模型的时候也会有所不同,具体需要因应用施策。早期的压测模型只关注应用的总qps以及个别接口的qps,这样的模型设计是可以更加准确的,最近一次压测的模型设计除了关注接口的qps外新增了关注上游来源是否准确以及接口的rt值和以往大促真实值对比。具体如下图所示:

c6ba56e8305668afa6291f2cf95ec888.png

        当一个应用有非常多的接口的时候,压测过程中不可能一一查看,选择的原则是部分核心接口(涉及核心链路接口必考虑,其次考虑高qps和长rt的重要接口)。很多下有应用是通过上游应用来(或者是上游和自身)来压测的,如mkc、offer_cbu这些核心应用。上游数据构造得准不准确,直接关系着下游各接口的流量配比(目前人工构造数据的数量和类型丰富度有限),这次大促依然有部分应用的接口配比依然不准确。这一点是下次大促压测亟需覆盖的点,mark下。

拿下单应用orderplatform为例看看。

f5db252fe860b17c7fc6e224b5d79283.png

7ebdf6e380077066e0a0029d06e54065.png

        总体的实际值是爆发值的80%左右,在预期之中。看数据PC的下单在大促爆发时的占比越来越低,现在是1.8%,所以在大促压测的时候对PC下单的场景已不作为重点考虑。对于无线会场的一些应用需要多场景混合压测,应用的模型设计和评估方法又会有较大的差异,所以具体的应用还需要具体对待。

压测执行篇

        全链路压测前需要做很多工作,如模型评估,单机水位评估等。单机水位压测,集团也有很多工具可以使用,这里列举两个目前比较常用的,一个是csp单机引流,另一个是pas性能评估平台。

        csp单机引流顾名思义,就是将线上的流量引流到一台机器上,进而来评估该机器的水位。在引流的过程中要时刻关注机器的负载和其他表现,因为一旦出现问题,影响的可是线上,容易报故障。下面贴一张图来看下配置的核心点。

fdb9189f63e34263c2919f8566d65e2f.png

        pas性能评估平台,原理和amazon平台(后面会介绍)类似,是通过施压机器来压测目标机器,可以只压测影子链路,这样就不用担心影响线上了,随便你怎么玩。平台提供的功能很丰富,但目前这个平台我用的最多的还是针对应用的单个接口来进行压测。这里介绍下如何配置。

创建一个场景

da86325b08b7290443805f29e9a3157e.png

加入测试计划(可以多个),指定压测的hsf接口。

d43ae413d1af5c1425f1435d19c72bff.png

压测执行页面

6f224f6d67061e7aa1b78dc5d494ed57.png

        还有一个最重要工具是全链路压测平台amazon,目前集团大部分的全链路压测都是通过这个平台来执行的,因为涉及的BU众多,压测前要关注平台是不是被禁用了(如双11,双12),被禁用会比较麻烦需要找相关人审批。第一次上手amazon平台,会有一些使用上多不习惯。因为有很多地方有默认的规则,不看规则就使用,基本上一踩一个坑。所以还是要先看文档(ata,官方都有很多),熟悉之后就可以使用这个平台执行全链路压测了。

有哪些地方要特别注意呢?

1)创建链路的时候,链路名称最好要填写。

7d65fa225cefdd8774ae9898c2716ceb.png

2)数据来源,一定要检查是否含有空格(如果压测数据里有登陆的操作,一定要让文件名含有1688!!!)

de5b59f0c7392df53aafa25f5522eb3e.png

3)某些应用如果出现机房调用不均等,需要设置dns绑定

7f6912a73d0e15f412b7683732b7326d.png

4)压测执行时,速率控制使用百分比来控制会让你更加游刃有余。

        除了压测工具的一些Tips,1218压测执行策略新增了摸高(触发限流)和模拟秒级脉冲两个内容。

下图为第二次压测的压测计划

e824d1ebff7aefb86b896cc1ecd5a0c1.png

监控工具篇

        集团查看应用接口qps的工具eagle-eye功能很强大,也是压测过程中查看接口qps主要工具。但目前eagle-eye统计的qps数据是分钟级被平均的qps,因为是被平均了,所以在大促爆发的时候通过eagle-eye看到的接口qps,都是不准确的。具体也要看业务场景,类似下单的秒级爆发场景,经验是真实qps是eagle-eye统计的qps的1.5~2倍左右。通过sunfire配置业务的秒级监控可以获取到真实的秒级值,但目前依然有很多业务线团队没有完成这一基础设施建设。配置sunfire秒级监控对大促压测意义非常,配置好sunfire监控,压测过程看数据相当给力。如何配置请查看文章1 & 文章2。

下图为压测流量下单的sunfire监控。

9b226c72d2bf70d3c4be0c8b0320cd8a.png

资源协调篇

        大促压测是CBU一个较大型的技术协作,涉及到的业务线较多,而且有时会和集团的资源有冲突,过程中有一些资源协调工作也必不可少。

  • 发送GOC公告通知。每次大促压测前需要发布GOC公告告知集团,以免和集团资源冲突

  • 尽早确定流量配比。流量配比直接关系单元数据构造和机器数量,越早确定越好

  • 压测平台amazon封网冲突。amazon平台遇到集团的双11、双12就会有段时间封网,提前预见封网风险

  • 提前预定压测会议室。需要提前准备插线板

  • 压测执行夜,准备夜宵。重要程度不言而喻

思考篇

        在压测的过程中和自己的leader、压测测试同学交流了很多压测的经验和思考,获益颇丰。其中有一些问题我觉得可以有答案,更多的问题是没有答案的,欢迎大家将各自的思考贴到评论区,作为后续压测的食粮。

1、为什么要做大促压测(大促压测的意义)?CBU大促的总qps量级目前和双11、双12相比,还是有很大差距,而每年大促压测要投入很多的人力成本,这些人力成本如何和机器成本相比更加高的话,我们是不是可以堆足够的机器,或者未来的机器运维能做到灵活的动态扩缩容就能保证系统的绝对稳定。

        大促压测肯定是需要的。原因在于系统的稳定性和多方面有关,机器计算资源只是其中一小部分。在压测的过程中,会发现90%以上的问题都不是机器资源不够的问题。大部分都是譬如tair超时,代码多线程处理不合理这类问题。我更觉得大促压测更像是一次技术的大阅兵,在阅兵过程中会暴露问题,保证这些问题不在大促发生。

2、怎样让我们的模型评估更加准确?

        这个问题没有答案,应该是每次大促压测追求的目标。从评估到设计再到执行都有很大的空间来做。如上文介绍,这次压测中,加入了关注接口上下游配比,评估应用核心接口,模拟秒级脉冲,摸高模拟限流这些都在模型上做的一些探索。

3、如何提高机器资源的利用率?

       当时有讨论过一个限流的方案(参考淘系)。

4、大促有新业务或者有新投放点,预估会带来的新流量需要如何评估?

       在第二次压测结束后,了解到支付宝端的货源市场页面上了新页面后,日常流量有大量增加,而且当时支付宝投放的策略也不定,大促可能会有爆发性的增长。当时评估流量基本靠经验,但谁也无法保证这个值就OK。这个评估的方法和依据需要业务方也一起参与建设。

        还有很多问题,如大促会场搭建完成比较晚的问题、无线各端应用混压问题等等,这些都是大促压测待解决的问题,道阻且艰,需要我们一同迎难而上。

       最后,感谢一起为大促奋斗的兄弟姐妹!感谢为大促压测更完美而一起献谋献策的同学(@重虎、@长臂、@定果、@悟极、@婉佩、@剑飞、@昌琪、@辰东、@芯壹...太多同学不一一列举)。也欢迎大家将对本次大促压测的建议加入到评论区,为后续大促压测做得更好献锦囊妙计。

附上主要内容的xmind图:

ed3fb78a79d1437965e4b91d2d16b6a9.png

42a60e1e7a13a830f84d9cfab563eb82.png




推荐阅读
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 基于移动平台的会展导游系统APP设计与实现的技术介绍与需求分析
    本文介绍了基于移动平台的会展导游系统APP的设计与实现过程。首先,对会展经济和移动互联网的概念进行了简要介绍,并阐述了将会展引入移动互联网的意义。接着,对基础技术进行了介绍,包括百度云开发环境、安卓系统和近场通讯技术。然后,进行了用户需求分析和系统需求分析,并提出了系统界面运行流畅和第三方授权等需求。最后,对系统的概要设计进行了详细阐述,包括系统前端设计和交互与原型设计。本文对基于移动平台的会展导游系统APP的设计与实现提供了技术支持和需求分析。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 场景1.IE,Firefox浏览器访问不了网站,谷歌浏览器可以,返回错误码DNS_PROBE_POSSIBLE.2.pingwww.qq.com可以ping通,ping局域 ... [详细]
  • 三、查看Linux版本查看系统版本信息的命令:lsb_release-a[root@localhost~]#lsb_release-aLSBVersion::co ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • rabbitmq杂谈
    rabbitmq中的consumerTag和deliveryTag分别是干啥的,有什么用?同一个会话,consumerTag是固定的可以做此会话的名字,deliveryTag每次接 ... [详细]
  • IP、ARP、TCP、UDP、ICMP、DNS、路由协议、DHCP协议的缺陷,容易受到的攻击,以及防御措施1、IP协议1.1、介绍: ... [详细]
author-avatar
小D申俊浩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有