全链路压测那点事(一)
个人介绍:大家好,我是大猫,2015年加入百度质量部,负责百度前端展现架构测试工具开发。曾负责并开发基于spark的阿拉丁模板召回查询系统与搜索前端阿拉丁模板页面diff工具,均取得良好效果。2018年加入贝壳质量部,全程参与贝壳网小程序接入微信支付与贝壳春晚全链路压测,并作为租赁压测负责人。
全链路压测
全链路压测一直是测试领域的一顶皇冠。
全链路压测对测试人员要求极高,不仅需要有性能测试知识,还要有一定的组织能力与工程能力。全链路压测不仅是一个测试任务,而是一个公司级别的超大型项目,全链路压测涉及到公司所有技术人员与职能部门,从压测准备到实施,直至压测完成后的改进与优化,通常需要涉及公司开发、测试、运维等多个部门协同合作,因此全链路压测更合理的组织方式是以项目形式展开,协同部门负责人进行牵头,集全公司之力以线上性能最优为目标进行的一次技术改进过程。
通常情况下项目上线前我们会对单一接口进行压测,此时我们可以获得单一接口性能的极限QPS数据,不过线上流量成分相当复杂,单一接口的性能数据并不能体现线上服务的真实情况。因此,我们还需要进行场景化的多接口性能压测。
假设我们的服务有100个接口,我们通过线上服务日志分析100个接口一天时间内的请求比例,我们根据请求流量配比可以很好地模拟线上流量,如果我们的压测工具支持日志回放,那么我们可以直接回放接入层日志进行本次压测,会更接近真实情况。
至此,我们已经较为完美的解决了压测流量构造的问题,但似乎事情并不像我们想象的那样简单,经过几次离线性能测试验证,你惊奇的发现我们的压测结果和线上的真实情况还存在较大差异,而造成这种差异出现的原因是压测环境与线上环境多方面不同的直接结果。
不幸的是通常情况下公司并不可能按照线上环境架构与性能要求1比1的搭建一套离线环境,因此生产环境的全链路压测就成为很多公司的必然选择,一旦决定在生产环境进行全链路压测,你会发现更加棘手的问题都排在后面,一个接着一个。
数据加载
进行全链路压测前我们必须要进行的第一件事情就是准备压测数据。压测数据可以从线上请求日志里提取,也可以从线上数据库查询,当然很多情况下也可以使用脚本进行数据构造。这似乎并不是一件困难的事情,但在考虑服务存在缓存的情况下通常我们需要大量的测试数据,不同服务的请求要准备不同类型的数据,这些数据累加起来甚至能达到上百G,然而很多性能测试工具将数据存储在内存中,使用64G内存的发压机都是极其奢华的一件事情,可想而知这个问题对于我们有多棘手。
数据污染
对于读接口我们可以直接请求生产环境,这并不是一个大问题,但是对于写接口我们直接请求生产环境一定会在生产环境造成脏数据,这些数据甚至会直接暴露给用户,显然这不是我们希望发生的事情。除此之外,这些高并发性能工具生成的测试数据也会抢占缓存、消息队列与数据库等公共资源,从而直接影响到线上基础服务。
流量区分
压测流量对于数据分析人员造成更大的困扰。你在夜里加班加点的进行压测,早晨数据分析师来到公司看数据实时大盘,oh my god!产品的PV与UV以页面暴增了百分之三百,GMV增加五倍!
外部依赖
当然,以上几点都不是最为头疼的问题,如果你的系统有外部依赖,特别是涉及安全或财产的外部系统,那么问题会显得更为复杂。如洪峰一般的压测流量同样会传导给外部系统,在你辛辛苦苦压测时合作放的运维人员业务被刺耳的短信铃声叫醒。
当然,这些仅是全链路压测的一部分痛点,全链路压测的痛点远不止于此!
后面的文章我会逐步介绍全链路压测的相关解决方案,对关键技术进行解析。
作 者:Testfan 大猫
出 处:微信公众号:自动化软件测试平台
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接
全链路压测那点事(一)相关推荐
- 全链路压测体系建设方案的思考与实践
在阿里淘宝 双11 的过程中,长期以来都是在生产环节做全链路压测的,通过实践我们发现在生产环境中做压测,实际上会和一个 IT 组织的结构.成熟度.流程等紧密相关,所以我们把全链路压测从简单的制作范围内 ...
- 阿里巴巴:全链路压测体系建设方案的思考与实践
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 在阿里淘宝 双1 ...
- 全链路压测平台(Quake)在美团中的实践
背景 在美团的价值观中,"以客户为中心"被放在一个非常重要的位置,所以我们对服务出现故障越来越不能容忍.特别是目前公司业务正在高速增长阶段,每一次故障对公司来说都是一笔非常不小的损 ...
- 阿里技术解密:全链路压测体系建设方案的思考与实践
在阿里淘宝 双11 的过程中,长期以来都是在生产环节做全链路压测的,通过实践我们发现在生产环境中做压测,实际上会和一个 IT 组织的结构.成熟度.流程等紧密相关,所以我们把全链路压测从简单的制作范围内 ...
- 你“被”全链路了么?全链路压测实践之理论
要说当下研发领域最热门的几个词,全链路压测 肯定跑不了.最近的几次大会上,也有不少关于全链路的议题.之前有朋友在面试过程中也有被问到了什么是全链路压测,如何有效的开展全链路压测.今天我们就来聊聊全链路 ...
- 高德全链路压测——语料智能化演进之路
背景 高德地图作为日活过亿的国民级出行生活服务平台,承载着海量用户服务的是后台的超大规模集群.从用户角度,如果出问题,影响会很大.3机房异地部署造成线上环境复杂,链路复杂.在这样的条件下,如何避免因故 ...
- 全链路压测自动化实践
背景 境内度假是一个低频.与节假日典型相关的业务,流量在节假日较平日会上涨五到十几倍,会给生产系统带来非常大的风险.因此,在2018年春节前,我们把整个境内度假业务接入了全链路压测,来系统性地评估容量 ...
- 罗辑思维在全链路压测方面的实践和工作笔记
业务的知名度越高,其背后技术团队承受的压力就越大.一旦出现技术问题,就有可能被放大,尤其是当服务的是对知识获取体验要求颇高的用户群体. 提供知识服务的罗辑思维主张"省时间的获取知识" ...
- 美团全链路压测自动化实践
境内度假是一个低频.与节假日典型相关的业务,流量在节假日较平日会上涨五到十几倍,会给生产系统带来非常大的风险.因此,在2018年春节前,基于美团基础的压测平台Quake,我们把整个境内度假业务接入了全 ...
最新文章
- 亿级浏览型网站静态化架构演变
- centos中用MySQL创建新表_CentOS下使用Shell批量创建数据库表
- 深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天
- IIS中架设二级域名网站
- Got minus one from a read call异常
- OpenStack的部署T版(九)——控制台部署
- 小甲鱼 OllyDbg 教程系列 (七) :VB 程序逆向分析
- 拿破仑时代的炮兵究竟数学要多好?
- C++程序代码:利用【函数】——画正三角形、倒三角形
- java 继承特点_java 继承特点
- java非静态内部类子类的调用_Java嵌套类和内部类详解
- Logisim-Gates library
- kodi奈飞固件_在Ubuntu,Debian和Kodi上,如何安装Netflix
- python弧度制转角度制_弧度制与角度制转换
- VSCode中使用GitHub
- html5 游戏 黑屏,战地5游戏最新黑屏无限加载解决方法
- 工业和信息化部关于印发贯彻落实《国务院关于积极推进“互联网+”行动的指导意见》行动计划(2015-2018年)的通知
- 阅读的 10 大好处:为什么你应该每天阅读
- 电脑变慢,4K对齐来解决
- (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
热门文章
- 阿里云深度学习平台试玩
- 记录:ERROR YarnScheduler: Lost executor 2 on XXX: Container killed by YARN for exceeding memory limits
- 电流输入放大器的设计
- 真正的朋友与普通的朋友的区别 (转)
- restTemplate访问接口
- 京东2020年Q2财报数据亮眼:超2000亿净收入背后供应链物流价值释放
- matlab 死区,MATLAB对AC/DC/AC电源的死区效应谐波仿真
- 学习笔记,什么是双活
- 信创云领未来,华云数据打造科技强国新基座
- fdisk命令 – 磁盘分区