精华内容
下载资源
问答
  • 全链路压测

    2019-10-25 15:27:05
    之前有和认识的同行聊过他们全链路压测的一些技术实现方案,自己也看了很多相关的资料,这篇博客,说说自己对全链路压测的理解,以及整理的一些知识点。。。 PS:主要罗列的是问题点,以及对应的一些解决方案,仅供...

    之前有和认识的同行聊过他们全链路压测的一些技术实现方案,自己也看了很多相关的资料,这篇博客,说说自己对全链路压测的理解,以及整理的一些知识点。。。

    PS:主要罗列的是问题点,以及对应的一些解决方案,仅供参考。。。

    相关链接:

    阿里全链路压测

    有赞全链路压测

    京东全链路压测

    饿了么全链路压测

    滴滴全链路压测解决之道

    美团全链路压测自动化实践

    逻辑思维在全链路压测方面的实践

     

    一、什么是全链路压测

    基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。

     

    二、全链路压测解决什么问题

    针对业务场景越发复杂化、海量数据冲击下整个业务系统链的可用性、服务能力的瓶颈,让技术更好的服务业务,创造更多的价值。

     

    三、面对的问题点以及解决方案

    1、业务模型梳理

    首先应该明确的是:全链路压测针对的是现代越来越复杂的业务场景和全链路的系统依赖。所以首先应该将核心业务和非核心业务进行拆分,确认流量高峰针对的是哪些业务场景和模块,

    针对性的进行扩容准备,而不是为了解决海量流量冲击而所有的系统服务集群扩容几十倍,这样会造成不必要的成本投入。

     

    2、数据模型构建

    数据构建和准备,应该考虑这几点问题:

    ①、数据的真实性和可用性

    可以从生产环境完全移植一份当量的数据包,作为压测的基础数据,然后基于基础数据,通过分析历史数据增长趋势,预估当前可能的数据量;

    ②、数据脱敏

    基于生产环境的全链路压测,必须考虑的一点是不能产生脏数据,以免对生产造成影响,影响用户体验等,因此在数据准备时需要进行数据脱敏;

    ③、数据隔离

    同样,为了避免造成脏数据写入,可以考虑通过压测数据隔离处理,落入影子库,mock对象等手段,来防止数据污染;

     

    3、压测工具选型

    全链路压测应对的都是海量的用户请求冲击,可以使用分布式压测的手段来进行用户请求模拟,目前有很多的开源工具可以提供分布式压测的方式,比如jmeter、Ngrinder、locust等。

    可以基于这些压测工具进行二次开发,由Contorller机器负责请求分发,agent机器进行压测,然后测试结果上传Contorller机器。

    考虑到压测量较大的情况下回传测试结果会对agent本身造成一定资源占用,可以考虑异步上传,甚至事务补偿机制。

     

    4、压测环境搭建

    全链路压测都是基于生产环境,解决了业务模型和数据以及压测工具选型开发,就要考虑系统扩容和风险规避了,比如压测不能影响实际的生产业务运行,还有资源申请等。

    重新搭建一套完全匹配生产环境的压测环境,成本太高,且需求频次较低,投入成本太大。

     

    5、系统容量规划

    前面提到了业务拆分和流量预估,在系统容量规划阶段,首先应该对单个接口单个服务进行基准测试,调整配置参数,得到一个基准线,然后进行分布式集群部署,通过nginx负载均衡。

    至于扩容,要考虑到服务扩容和DB资源扩容,以及服务扩容带来的递减效应。

    至于大流量冲击情况下,可以考虑队列等待、容器锁、长连接回调、事务降级等方式来解决。

     

    6、测试集群部署

    能做全链路压测的业务系统,基本都是分布式系统架构,服务集群部署和负载均衡,就是需要实现和考虑的技术点。

    需要解决的问题有:

    ①、服务间通信问题

    一般通信方式有两种:同步和异步。

    同步调用:

    REST(JAX-RS,Spring Boot)

    RPC(Thrift, Dubbo)

    异步调用:

    (Kafka, Notify, MetaQ)

    同步调用一致性强,但是要考虑性能和调用失败的事务处理。

    异步调用的话,可以降低服务间的耦合,提升性能体验,但是一致性是需要解决的(分布式架构有个CAP理论,感兴趣的可以查询相关资料看看)。

    ②、负载均衡问题

    需要将大流量冲击均匀的分发给集群上的每台机器,目前比较优秀的负载均衡服务器是nginx,但nginx的部署貌似也存在一些问题,我们公司之前就遇到过订单重复问题。

    ③、容灾问题

    需要确保的一点是:当服务中的某台或者某部分服务宕机,可以及时的进行服务转发,而不至于连锁反应下整个系统链路的服务挂掉(可以参考我之前的博客:容灾测试)。

     

    7、数据收集监控

    压测数据收集,需要由agent机回送给Contorller机器,但数据量过大会占用一定的资源,可以考虑异步实现测试结果回送。

    至于监控,现在有很多优秀的专业监控工具,比如Nmon、Zabbix,全链路监控工具Zipkin、PinPoint以及携程开源的全链路监控工具CAT。

    或者可以针对需要,二次开发JVM自带的一些监控工具,做到实时全方位监控。

     

    上面的内容,主要还是一些知识点整理和个人的一些思考,权当参考,如有错误或者更好的建议,可以在评论区指正,不胜感激!

    展开全文
  • 之前对全链路压测概念比较懵,现在简单梳理下,后续有学习到的干货再持续补充:可参考:阿里全链路压测京东全链路压测 1.什么是全链路压测 基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链...

    之前对全链路压测概念比较懵,现在简单梳理下,后续有学习到的干货再持续补充:
    可参考:
    阿里全链路压测
    京东全链路压测

    1.什么是全链路压测

    基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。

    2.全链路压测解决什么问题

    针对业务场景越发复杂化、海量数据冲击下整个业务系统链的可用性、服务能力的瓶颈,让技术更好的服务业务,创造更多的价值。

    3.如何开展全链路压测?
    分析压测业务场景涉及系统服务;
    协调各个压测系统资源;
    压测环境(需要将请求和访问、业务数据处理都进行隔离,防止影响到生产环境。发起请求的时候通过请求报文头中的压测标示来进行区分处理,将压测的流量分流到指定的应用服务器和存储进行数据保存和处理);
    压测数据(数据清洗,数据Tag);
    压测数据隔离;
    压测数据实时监控;

    4.全链路压测核心要素?
    压测环境(数据与流量隔离能力的生产环境);
    压测数据(压测用户、店铺、商品等基础数据);
    压测场景(场景模型,压测哪些业务场景,每个场景下压测多大量);
    压测流量(流量要能被识别,带有特殊的标记,标记能够随着中间件协议的调用关心进行传递);
    流量下发脚本的核心是控制漏斗转化率,不同场景的流量配比;每个场景下,url从上往下的漏斗转化率;
    流量爬升规律;

    转载于:https://blog.51cto.com/11959825/2141890

    展开全文
  • 全链路压测方案梳理

    千次阅读 2019-06-10 15:13:43
    全链路压测的概念挺火的,想做成却没有机会(毕竟不是互联网巨头类的公司),所以在这里也不想纸上谈兵,可能过段时间它就会被更新更高大上的概念给替换了,但是我们可以收集一下相关资料(目前可以开展全链路压测的...

           全链路压测的概念挺火的,想做成却没有机会(毕竟不是互联网巨头类的公司),所以在这里也不想纸上谈兵,可能过段时间它就会被更新更高大上的概念给替换了,但是我们可以收集一下相关资料(目前可以开展全链路压测的公司真的很少,所以资料有限),将来对自己的性能测试项目可能也会有帮助:

    相关链接:

    阿里全链路压测    全链路压测3.0    智能全链路压测

    有赞全链路压测实战    全链路压测方案设计与实施详解     全链路压测引擎的设计与实现

    京东全链路压测

    饿了么全链路压测

    滴滴全链路压测解决之道

    美团全链路压测自动化实践

    全链路压测平台(Quake)在美团中的实践

    逻辑思维在全链路压测方面的实践

    全链路压测的大概思路

    全链路压测定义

    全链路压测平台主要有两个核心的也是最顶级的要求:

    • 全业务
    • 全链路

    这导致了,必须线上搞压测,必须用线上的真实数据搞压测。
    那么线上搞就容易搞出事情,所以技术含量还是要有的,还是很高的。

    压测关键前提

    1、业务模型梳理

    首先应该明确的是:全链路压测针对的是现代越来越复杂的业务场景和全链路的系统依赖。所以首先应该将核心业务和非核心业务进行拆分,确认流量高峰针对的是哪些业务场景和模块,

    针对性的进行扩容准备,而不是为了解决海量流量冲击而所有的系统服务集群扩容几十倍,这样会造成不必要的成本投入。

    2、数据模型构建

    数据构建和准备,应该考虑这几点问题:

    ①、数据的真实性和可用性

    可以从线上环境(生产环境)完全移植一份当量的数据包,作为压测的基础数据,然后基于基础数据,通过分析历史数据增长趋势,预估当前可能的数据量;

    据说美团的做法是:

    • http服务的,通过nginx日志把请求内容导出来,处理一下,放到数据库池子里。
    • rpc服务的,通过美团内部已有的rpc框架录制功能,把请求数据导出来,处理一下,放到数据库池子里。

    然后压测流量从数据库池子里来。

    ②、数据脱敏

    基于生产环境的全链路压测,必须考虑的一点是不能产生脏数据,以免对生产造成影响,影响用户体验等,因此在数据准备时需要进行数据脱敏。

    ③、数据隔离

    同样,为了避免造成脏数据写入,可以考虑通过压测数据隔离处理(根据测试标识区分),落入影子库,mock对象等手段,来防止数据污染;另外比如http请求,可以直接将测试标识加在header里(不污染代码,仅测试引擎添加即可),这样可以把隔离出来的(带测试标识的)流量,只访问隔离出来的服务器,这样就不会污染整个线上服务器集群。

    压测核心

    全链路压测基本上和原生Jmeter没关系,因为Jmeter用的是BIO(基于Jmeter的云平台化,足够规模的分布式压测也是可选的一个方向),美团用的是NIO,阿里的PTS也用到NIO,好处不解释了。
    采用的方式有:

    • 使用一些脚本语言如:Python、Ruby 等,读取线上日志构建请求,用多线程模拟用户请求进行压测
    • 类似Netty NIO 框架 + apache ab 组合模式
    • 采用Twitter/iago、 Gatling、Grinder、Locust等开源压测工具
    • 大厂都会自主研发压测平台,避开了开源工具的一些问题

    压测监控

    一般会采用 InfluxDB 来完成数据的聚合工作,所有聚合指标都是一行 SQL 搞定,非常快速。或基于开源二次开发的监控,比如CAT,Falcon,Skywalking等。

    关于监控这块,美团的开源精神值得肯定(虽然内部的好东西未必能开源出来),而像饿了么监控系统 EMonitor 说是比CAT好,但目前为止也没见开源,阿里的云监控更别提了,天天推销让你花钱买服务。

    什么公司要搞全链路压测

    至少目前来看,得是有追求,有余力的公司吧。
    阿里,滴滴,饿了么,云集微店,美团,这些公司有一个共性,都是支付场景比较高并发的公司,就是对钱非常敏感的公司。
    支付场景,也就是支付相关的各个服务(订单,派送,入库出库等很多),相连密切,这样的场景比较复杂,还是高并发,自然对性能测试有高要求。
    同时支付场景,是会改变库的数据的,这也要求线上测试必须做数据隔离,这也是全链路压测的核心。

    什么阶段的公司搞全链路压测

    • 微服务的架构。
    • 需要架构组,得有Mtrace的这种微服务RPC消息跟踪体系架构,能改中间件。
    • 各部门能配合全链路压测调试及部署,运维的机器资源部署。
    • 简单性能测试要通过,即单点的性能测试要没问题。
    • 有更高的技术追求。

    什么时间搞全链路压测

    • 压力小的白天就行,要错过高峰期,这也是得益于数据隔离,服务器隔离。
    • 压力大的一般凌晨进行,要错过高峰期。

    谁来搞

    肯定不是测试,也不是一般的性能测试工程师和测试开发工程师,基本上是一个研发团队在搞。

    据说美团的压测平台前身也是测试开发工程师搞的,推广的也不错,在美团趟出了一条压测的路,但是存在了不少有待改进的地方。后来种种原因,平台移交给了开发团队,现在看起来,平台的压测性能、可用性等各方面有了很大的提升。不是说测试开发的同学做不了,而是效率和速度确实还是有差距的。开发同学的效率和速度就是特别大的优势,能加班,可以快速的让产品成型并且快速迭代。

    以上内容部分参考自 https://testerhome.com/topics/16498

    展开全文
  • 聊聊全链路压测

    2018-02-14 14:53:00
    之前有和认识的同行聊过他们全链路压测的一些技术实现方案,自己也看了很多相关的资料,这篇博客,说说自己对全链路压测的理解,以及整理的一些知识点。。。 PS:主要罗列的是问题点,以及对应的一些解决方案,仅供...

    之前有和认识的同行聊过他们全链路压测的一些技术实现方案,自己也看了很多相关的资料,这篇博客,说说自己对全链路压测的理解,以及整理的一些知识点。。。

    PS:主要罗列的是问题点,以及对应的一些解决方案,仅供参考。。。

    相关链接:

    阿里全链路压测

    有赞全链路压测

    京东全链路压测

    饿了么全链路压测

    滴滴全链路压测解决之道

    美团全链路压测自动化实践

    逻辑思维在全链路压测方面的实践

     

    一、什么是全链路压测

    基于实际的生产业务场景、系统环境,模拟海量的用户请求和数据对整个业务链进行压力测试,并持续调优的过程。

     

    二、全链路压测解决什么问题

    针对业务场景越发复杂化、海量数据冲击下整个业务系统链的可用性、服务能力的瓶颈,让技术更好的服务业务,创造更多的价值。

     

    三、面对的问题点以及解决方案

    1、业务模型梳理

    首先应该明确的是:全链路压测针对的是现代越来越复杂的业务场景和全链路的系统依赖。所以首先应该将核心业务和非核心业务进行拆分,确认流量高峰针对的是哪些业务场景和模块,

    针对性的进行扩容准备,而不是为了解决海量流量冲击而所有的系统服务集群扩容几十倍,这样会造成不必要的成本投入。

     

    2、数据模型构建

    数据构建和准备,应该考虑这几点问题:

    ①、数据的真实性和可用性

    可以从生产环境完全移植一份当量的数据包,作为压测的基础数据,然后基于基础数据,通过分析历史数据增长趋势,预估当前可能的数据量;

    ②、数据脱敏

    基于生产环境的全链路压测,必须考虑的一点是不能产生脏数据,以免对生产造成影响,影响用户体验等,因此在数据准备时需要进行数据脱敏;

    ③、数据隔离

    同样,为了避免造成脏数据写入,可以考虑通过压测数据隔离处理,落入影子库,mock对象等手段,来防止数据污染;

     

    3、压测工具选型

    全链路压测应对的都是海量的用户请求冲击,可以使用分布式压测的手段来进行用户请求模拟,目前有很多的开源工具可以提供分布式压测的方式,比如jmeter、Ngrinder、locust等。

    可以基于这些压测工具进行二次开发,由Contorller机器负责请求分发,agent机器进行压测,然后测试结果上传Contorller机器。

    考虑到压测量较大的情况下回传测试结果会对agent本身造成一定资源占用,可以考虑异步上传,甚至事务补偿机制。

     

    4、压测环境搭建

    全链路压测都是基于生产环境,解决了业务模型和数据以及压测工具选型开发,就要考虑系统扩容和风险规避了,比如压测不能影响实际的生产业务运行,还有资源申请等。

    重新搭建一套完全匹配生产环境的压测环境,成本太高,且需求频次较低,投入成本太大。

     

    5、系统容量规划

    前面提到了业务拆分和流量预估,在系统容量规划阶段,首先应该对单个接口单个服务进行基准测试,调整配置参数,得到一个基准线,然后进行分布式集群部署,通过nginx负载均衡。

    至于扩容,要考虑到服务扩容和DB资源扩容,以及服务扩容带来的递减效应。

    至于大流量冲击情况下,可以考虑队列等待、容器锁、长连接回调、事务降级等方式来解决。

     

    6、测试集群部署

    能做全链路压测的业务系统,基本都是分布式系统架构,服务集群部署和负载均衡,就是需要实现和考虑的技术点。

    需要解决的问题有:

    ①、服务间通信问题

    一般通信方式有两种:同步和异步。

    同步调用:

    REST(JAX-RS,Spring Boot)

    RPC(Thrift, Dubbo)

    异步调用:

    (Kafka, Notify, MetaQ)

    同步调用一致性强,但是要考虑性能和调用失败的事务处理。

    异步调用的话,可以降低服务间的耦合,提升性能体验,但是一致性是需要解决的(分布式架构有个CAP理论,感兴趣的可以查询相关资料看看)。

    ②、负载均衡问题

    需要将大流量冲击均匀的分发给集群上的每台机器,目前比较优秀的负载均衡服务器是nginx,但nginx的部署貌似也存在一些问题,我们公司之前就遇到过订单重复问题。

    ③、容灾问题

    需要确保的一点是:当服务中的某台或者某部分服务宕机,可以及时的进行服务转发,而不至于连锁反应下整个系统链路的服务挂掉(可以参考我之前的博客:容灾测试)。

     

    7、数据收集监控

    压测数据收集,需要由agent机回送给Contorller机器,但数据量过大会占用一定的资源,可以考虑异步实现测试结果回送。

    至于监控,现在有很多优秀的专业监控工具,比如Nmon、Zabbix,全链路监控工具Zipkin、PinPoint以及携程开源的全链路监控工具CAT

    或者可以针对需要,二次开发JVM自带的一些监控工具,做到实时全方位监控。

     

    上面的内容,主要还是一些知识点整理和个人的一些思考,权当参考,如有错误或者更好的建议,可以在评论区指正,不胜感激!

     

    转载于:https://www.cnblogs.com/imyalost/p/8439910.html

    展开全文
  • 最近忙于公司的全链路压测平台调研和技术规划...美团全链路压测自动化实践全链路压测平台在美团中的实践饿了么全链路压测的探索与实践饿了么全链路压测平台的实现与原理有赞全链路压测方案设计与实施详解京东全链...
  • 全链路压测浅析

    2019-04-14 15:29:08
    无论是否是全链路压测,压测前注意: 1、压测环境准备 服务实现隔离 数据库/MQ/缓存/日志做影子隔离或偏移处理: 下游依赖mock 2、模拟施压流量 3、监控告警设置 4、踩过的坑总结 5、发现的一些线上问题 0...
  • 全链路压测实战

    千次阅读 2020-05-19 16:38:55
    通过全链路压测,模拟真实流量高峰,串联线上全部系统,让核心系统同时达到流量峰值: 验证大促峰值流量下系统稳定性 容量规划 进行强弱依赖的划分 降级、报警、容灾、限流等演练 … 通过全链路压测这一手段,对...
  • 近期在和业内学习交流,加上自己思考,抽象梳理总结下,行业内全链路压测的发展,分为以下几个阶段 1.有的问题。2013年左右阿里为解决服务稳定性问题,做链路压测,做的全链路压测系统。其它公司后续也跟进。这个...
  • 全链路压测经验

    2019-02-21 20:59:41
    最近几年随着电商的各种促销活动,有一个词也渐渐进入我们眼帘--“全链路压测”。全链路压测被众多互联网公司的程序员定义为核武器,传统性能测试更多的是以事务为核心,更多的是由单个或者多个事务构成业务场景...
  • 全链路压测的大概思路 Jul 15, 2018|技术|Hits 参与了我们业务的全链路压测,虽然过程磕磕绊绊,压测的当天晚上还在写压测脚本,但是核心链路的压测还是做了起来,效果也不错,当前晚上就爆出了一个P1级的bug。...
  • 前言之前自己也写过好几篇关于全链路压测的文章或者博客,最近看了infoQ上...18年初:聊聊全链路压测19年初:再谈全链路压测20年初:全链路压测探索实践之路19年双十一备战:全链路压测第一次实践20年618大促总结...
  • 全链路性能压测方案介绍,本文档从宏观方面去介绍全链路压测的方案实施、技术刷选、细节
  • 阿里全链路压测

    2020-01-12 18:34:11
    阿里全链路压测https://blog.csdn.net/yunqiinsight/article/details/102679309
  • 滴滴全链路压测实践

    千次阅读 2018-04-12 10:42:05
    稳定性是技术团队的命根子,滴滴也在搞全链路压测了。虽然才四五年,滴滴内部已经有众多系统,而且号称四大语言,八大框架,改造成本可想而知。如何做到釜底抽薪,支持线上环境的全链路压测?而且与一般电商不同,...
  • 有赞全链路压测实战

    2019-12-15 21:58:55
    有赞全链路压测实战 前言 有赞致力于成为商家服务领域里最被信任的引领者,因为被信任,所有我们更需要为商家保驾护航,保障系统的稳定性。有赞从去年开始通过全链路压测,模拟大促真实流量,串联线上全部系统,让...
  • 全链路压测笔记

    2019-06-01 22:37:12
    全链路压测背景目的 公司业务发展,难有一个量化的数据衡量核心链路的真实峰值。有助于提升核心业务的稳定性。 找出整个链路的瓶颈,优化少量的瓶颈部分提升整体性能,以期达到用最少的资源达到最佳效果。认识误区...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 541
精华内容 216
关键字:

全链路压测