全链路压测分析

标签: dev | 发表时间:2019-11-08 00:00 | 作者:
出处:http://itindex.net/relian

最近网传,微信支付崩了,哈罗出了问题,部分公司性能测试架构师招聘又开始火热起来,现在都叫做全链路压测,那什么是全链路压测呢,跟传统压测区别是啥呢?全链路最早是阿里提出来的,在2012年的双11,零点的时候,系统交易成功率不足50%,下单报错,购物车报错,并伴随着大量超卖,后来提出了全链路压测,这篇文章就来聊聊全链路压测的关键点。


面试过很多公司,性能测试有很多形态,一般的公司还在工具使用阶段,做下简单的监控,然后出报告,结束,这样的做法基本就是走个形式,也有的开发团队相对负责,会在压测的过程中协助诊断,看看有没有优化点,一般来说多少会发现一些问题,会有些效果,但是往往大促,又会出现其他问题,leader问不是做过压测了吗?你觉得做过,但好像又做得不够.....


1.什么是线上全链路性能测试:

基于真实的用户场景,实际线上环境,按照既定流量,对各个业务链路进行压力测试的过程。


2.为什么要做全链路性能测试:

很多公司有线下性能测试,为啥还要做全链路呢,能解决一般性能测试的什么问题呢?我认为在每个环境做性能测试是相互补充的过程,在线下的性能测试,由于机器监控,部署迅速以及相应的权限充足,我们可以迅速定位到一些性能bug,如内存泄漏,死锁,超卖等问题,但是线下的机器达到的指标不能准确的反馈到线上的实际情况,我们并不能简单通过一些充满大量经验值的公式去推算,这样的结果和拍脑袋也没啥太大差异,再加上线下环境大多以分链路,模块压测为主,所以全链路压测在这样的背景下就诞生了,我们的前提是在线下已经模块压测完成,无明显瓶颈的情况下开展,在线上进行链路的充分模拟压测。


3.全链路压测的核心是什么?

无论何种测试,核心的东西一定是需求分析,那全链路性能需求分析的要点是啥呢,和传统线下性能测试有啥区别呢?


请求数据源:

在传统线下性能测试,一般我们拿到接口参数便开始调试,写脚本,按照场景进行测试,而线上我们需要根据实际数据源统计,包含web端,app端,小程序端等,这个是我们的客户端数据来源,还有我们的运营商带宽占用情况,cdn节点的分布,这样就涉及到外网的压测,外网的压测策略和内网细节上的差别还是比较大的,本文不作具体讨论。


架构拓扑分析:

线上的部署结构往往比我们测试环境要复杂很多,测试环境往往是线上很小的一个分支,线上各种微服务的依赖集群,中间件,db需要调研的非常清楚,多少服务器,服务器上部署实例的情况,每个细节都会影响到压测的结果,以及分析的准确性。


数据分析:

数据分析可以分很多层次,在一般的性能压测中,我们一般会关注参数化数据和db数据,全链路压测中,还需要关注,redis数据,mq堆积,以及key的大小对实际带宽的影响,这些都跟中间件相关,一旦出现问题,对网站的影响往往是毁灭性的,带宽这块往往也是线下局域网测试不能覆盖的,线上会跨机房调用,所以尤其需要关注这块。


监控分析:

大多是情况下,我们会做硬件层的监控包括cpu,带宽,内存,磁盘等,然后客户端进行数据采集,指标一般也通过压测数据采集,但这些在全链路压测中还是显得还有基础,我们需要去通过更多服务器维度监控,包含各服务集群的业务指标数据,db层的实时下单数据,容器级别资源监控数据等内容,以及结合健康度指标等,在线上压测需要设置阈值,尽可能规避线上风险,防止造成用户流失。


压测目标的设定:

我们很多公司在线下压测的时候因无参考数据,可能压到拐点作为首选目标,而成熟的互联网公司一定会做线上的容量评估,一般会根据以往业绩以及流量相结合,会有一定比例增长的预估,还有通过推送转化率去评估,个人觉得可以长期做模型去进行数据积累,达到经验值的参考。


流量回放:

首先来说,能做到流量回放的公司很少,这个涉及到系统的改造,关键在于数据加工这块,能达到流量回放,测试的很多前期准备工作会少很多,但同时前期的开发改造任务也非常繁重,在阿里也一个开发团队封闭改造三个月才有一个雏形版本,任何一家公司都可以引用一种技术类型,但是做的深浅会很不一样。


这篇就聊到这里,你有新的观点可以留言,感谢关注。


相关 [分析] 推荐:

竞品分析

- 章明 - 互联网的那点事
关于竞品分析,之前天行(@天行Aeros)有篇文章《设计公式:简单有效的竞品分析》已经进行了介绍,本文在该文章的基础之上再进行一些分享,希望对大家有用. 竞品分析(Competitive Analysis)一词最早源于经济学领域. 市场营销和战略管理方面的竞品分析是指对现有的或潜在的竞争产品的优势和劣势进行评价.

Excel-对比图分析(差异分析)

- - CSDN博客数据库推荐文章
本文摘自作者《网站数据分析:数据驱动的网站管理、优化和运营 》: http://item.jd.com/11295690.html. 对比分析就是将两个或两个以上的数据进行比较,分析它们之间的差异,从而揭示这些数据所代表事物的发展变化情况和规律. 通过对比,可以很直观地看出事物在某方面的差距,并且可以准确、量化地表示出差距的多少.

Netty代码分析

- LightingMan - 淘宝JAVA中间件团队博客
Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序[官方定义],整体来看其包含了以下内容:1.提供了丰富的协议编解码支持,2.实现自有的buffer系统,减少复制所带来的消耗,3.整套channel的实现,4.基于事件的过程流转以及完整的网络事件响应与扩展,5.丰富的example.

分析帝转世

- JoyLee - Lzhi's Views
纪晓岚与和珅的经典对白(和绅说得是实话啊). 本文网址:http://www.lzhi.org/views/652030. 欢迎加入500人超级QQ群:108869281,交流最新好文章.

fqueue初步分析

- tangfl - 淘宝JAVA中间件团队博客
    fqueue是国产的一个类似memcacheq,kestrel这样的支持memcached协议的轻量级开源MQ. http://code.google.com/p/fqueue/downloads/list,介绍和特点都可以看主页,我就不废话了.     今天老大提到, co了源码看了下,写个初步分析报告.

"偷情的分析

- 阳阳 - Cao Liu
一、弦断无人听��风情万种的才情女子,下嫁给木头人或者肌肉男. 他永远不可能对落叶秋风或者飞雪骄阳产生莫名感触,并视此种举动为无知可笑. 你梦想中一直有一个优雅书生,你可以和他笑傲江湖,共赏风花雪月. 有一天,这个人悄然降临,似乎是一种无可逃脱的宿命.   二、你是疯儿我是傻��挑不出他品德上的毛病.

GFS架构分析

- zou - NOSQL Notes
Google文件系统(Google File System,GFS)是构建在廉价的服务器之上的大型分布式系统. 它将服务器故障视为正常现象,通过软件的方式自动容错,在保证系统可靠性和可用性的同时,大大减少了系统的成本. GFS是Google云存储的基石,其它存储系统,如Google Bigtable,Google Megastore,Google Percolator均直接或者间接地构建在GFS之上.