实时警报通知:微信告警通知的重要性解析
1379
2022-12-13
本篇文章给大家谈谈全链路压测开源工具,以及全链路压测技术 架构对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享全链路压测开源工具的知识,其中也会对全链路压测技术 架构进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、DDOS压力测试有什么工具
2、阿里云服务器ECS如何选择?性能测试PTS助你测试和选择阿里云服务器
3、全链路压测流量模型
1、LoadRunner
LoadRunner是一种预测系统行为和性能的负载测试工具,通过模拟实际用户的操作行为进行实时性能监测,来帮助测试人员更快的查找和发现问题。LoadRunner适用于各种体系架构,能支持广泛的协议和技术,为测试提供特殊的解决方案。企业通过LoadRunner能最大限度地缩短测试时间,优化性能并加速应用系统的发布周期。
LoadRunner提供了3大主要功能模块:VirtualUser Generator(用于录制性能测试脚本),LoadRunner Controller(用于创建、运行和监控场景),LoadRunner Analysis(用于分析性能测试结果)既可以作为独立的工具完成各自的功能,又可以作为LoadRunner的一部分彼此衔接,与其他模块共同完成软件性能的整体测试。
详见:《性能测试入门——LoadRunner使用初探》(http://www.admin5.com/article/20161114/695706.shtml)
LoadRunner官网:https://saas.hpe.com/zh-cn/software/loadrunner
2、Apache JMeter
JMeter作为一款广为流传的开源压测产品,最初被设计用于Web应用测试,如今JMeter可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP服务器等等,还能对服务器、网络或对象模拟巨大的负载,通过不同压力类别测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能测试和回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
JMeter的特点包括对HTTP、FTP服务器、数据库进行压力测试和性能测试;完全的可移植性;完全 Swing和轻量组件支持包;完全多线程;缓存和离线分析/回放测试结果;可链接的取样器;具有提供动态输入到测试的功能;支持脚本编程的取样器等。在设计阶段,JMeter能够充当HTTP PROXY(代理)来记录浏览器的HTTP请求,也可以记录Apache等WebServer的log文件来重现HTTP流量,并在测试运行时以此为依据设置重复次数和并发度(线程数)来进行压测。
参考文章:《云智慧压测实战分享之JMeter工具使用初探》(https://segmentfault.com/a/1190000007922515)
官网链接:http://jmeter.apache.org/
3、NeoLoad
NeoLoad是Neotys出品的一种负载和性能测试工具,可真实地模拟用户活动并监视基础架构运行状态,从而消除所有Web和移动应用程序中的瓶颈。NeoLoad通过使用无脚本GUI和一系列自动化功能,可让测试设计速度提高5-10倍,并将维护的脚本维持在原始设计时间的10%,同时帮助用户使用持续集成系统自动进行测试。
NeoLoad支持WebSocket、HTTP1/ 2、GWT、HTML5、AngularJS、Oracle Forms等技术协议,能够监控包括操作系统,应用服务器,Web服务器,数据库和网络设备在内的各种IT基础设施,同时可以通过Neotys云平台发起外部压力。
官网链接:http://www.neotys.com/product/overview-neoload.html
4、WebLOAD
WebLOAD是来自Radview公司的负载测试工具,它可被用以测试系统性能和弹性,也可被用于正确性验证(验证返回结果的正确性)。其测试脚本是用Javascript(和集成的COM/Java对象)编写的,并支持多种协议,如Web(包括AJAX在内的REST/HTTP)、SOAP/XML及其他可从脚本调用的协议如FTP、SMTP等,因而可从所有层面对应用程序进行测试。
WebLOAD存在免费和专业两个版本,免费版本支持50个虚拟用户,专业版还提供更多的报告和协议供用户选择。WebLOAD通常用作QA团队的独立运行工具,在开发周期的验证阶段,被测系统(System Under Test,SUT)投入实用之前,在模拟环境中对被测系统进行测试。
官网链接:http://www.radview.com/
5、Loadster
Loadster是一款商用负载测试软件,用于测试高负载下网站、Web应用、Web服务的性能表现,支持Linux,Mac和Windows等运行环境。
Loadster能够对Web应用/服务的Cookies、线程、头文件、动态表格等元素发起测试,获得Web在压力下的性能、弹性、稳定性和可扩展性等方面的表现。
官网链接:http://www.loadsterperformance.com/
6、Load impact
Load impact是一款服务于DevOps的性能测试工具,支持各种平台的网站、Web应用、移动应用和API测试。Loadimpact可以帮助用户了解应用的最高在线用户访问量,通过模拟测试不同在线人数下网站的响应时间,估算出服务器的最大负载。
Load impact的使用非常简单,只需要输入网址进行测试,便可统计出加载网站的一些详细数据。包括整体加载和站内图片,javascript, CSS等代码载入。可以在右侧列表选择不同文件来同时对比最多三个对象的加载数据,并生成图表显示,方便网站设计者来分析。测试完成之后,网站还可以存储测试过的统计数据。
官网链接:http://loadimpact.com/
7、CloudTest
CloudTest 是一个集性能和功能测试于一体的综合压力测试云平台,专为现代网络和移动应用测试而设计开发,CloudTest可以图形化实现判断、循环,整体减轻了测试开发的工作量,缩短了开发时间。CloudTest基于内存的分析引擎,可以实时收集和展示数据,所有数据在3秒内汇聚显示。
CloudTest采用虚拟化技术,完美的配合公有/私有云计算技术,无需过多的硬件,带宽资源的投入,人力维护成本几乎为零,测试按需获得,远程接入,适合多团队协作。各种规模的模拟成本均远远优于传统工具,同时大大缩短了测试周期。
官网链接:https://soasta.com/cloudtest
8、Loadstorm
Loadstorm是一款针对Web应用的云端负载测试工具,通过模拟海量点击来测试Web应用在大负载下的性能表现。由于采用了云资源,所以Loadstorm的测试成本非常低,用户可以在云端选择创建自己的测试计划,测试标准和测试场景。
Loadstorm最多可以生成多达50000个并发用户,通过数以千计的云服务器发起访问。使用Loadstorm不需要任何脚本知识,同时提供多样化的测试图表和报告模版,用于准确测量Web应用的各项性能指标,如错误率,平均响应时间和用户数量等。Loadstorm可以申请免费试用,但更多压力和功能需要开通高级帐户。
官网链接:http://loadstorm.com/
9、阿里云PTS
阿里云性能测试(Performance Testing)是一个SaaS性能测试平台,具有强大的分布式压测能力,可模拟海量用户真实的业务场景,让应用性能问题无所遁形。PTS平台特色包括提供压测机,无需安装软件;脚本场景监控简单化,省时、省力;分布式并发压测,施压能力无上限;快速大规模集群扩容、支持几十万用户及百万级TPS性能压测;80%以上用户基本不需要花费额外的成本。
PTS分为两个版本,Lite版免费,企业版提供资源包月和按量付费两种计费方式,按量付费采用阶梯价计算,满足企业客户多种压测需求。
官网链接:https://www.aliyun.com/product/pts
10、压测宝
压测宝是云智慧推出的面向真实用户行为与地域分布的全链路云端压力测试平台,通过云端服务器产生真实分布式用户访问压力,模拟来自各地域用户接入后台所带来的真实流量,无限接近生产环境所面临的各种复杂因素,测量真实的用户体验。通过集成云智慧应用性能管理和监控产品,帮助实现基于真实用户行为的压测方案定制、压测过程中实时定位各环节应用资源及代码瓶颈,现场纠错,分析应用性能肇因。
产品功能特色方面,压测宝通过独有的开放架构,支持各种主流网络协议;同时支持手机APP的脚本录制方式,可以大大降低压测脚本制作的时间和难度。依托压测宝以及完善的产品线,云智慧为用户提供了一站式压测服务,面向云计算时代的复杂应用提供专业性能压测服务,帮助企业客观评估应用性能容量,发现全链路性能瓶颈,对应用架构的调优及架构容量规划提供专业咨询服务,满足企业灵活多变的业务需求。目前压测宝已提供高达10万UV并发级别的压测服务。
阿里云服务器ECS如何选择?很多新手用户并不知道PTS是什么,如果你不知道如何选择阿里云服务器ECS产品,性能测试PTS可以很好的帮助你快速对云服务器进行压力测试,从而助你选择适合自己的阿里云服务器ECS,下面是性能测试PTS详解!
阿里云开发者社区最近推出了一个“ ECS 选款利器!PTS助您快速上云 ”活动,PTS性能压测包仅需0.99/月起,真实模拟,免去繁琐的搭建和维护成本!现在您可以只支付10块钱不到的试用成本,即可体验使用 PTS 来帮助 ECS 进行容量规划选择合适规格的整个流程!
完成动手实验的同学,即可参与抽奖活动,小米手环 6、蓝牙键盘、掌上游戏机、笔记本支架、 数据线、优惠券等丰富奖品等您来拿!限量 1500 份,抽奖即得,百分百中奖哦!
性能测试PTS(Performance Testing Service)是具备强大的分布式压测能力的SaaS压测平台,可模拟海量用户的真实业务场景,全方位验证业务站点的性能、容量和稳定性。
PTS旨在简化性能压测本身的工作。
PTS目标是将性能压测本身的工作持续简化,使您可以将更多的精力回归到关注业务和性能问题本身。在PTS平台上,您可以用较低的人力和资源成本,构造出最接近真实业务场景的复杂交互式流量,快速衡量系统的业务性能状况,为性能问题定位、容量配比、全链路压测的流量构造提供最好的帮助。进而提升用户体验,促进业务发展,最大程度实现企业的商业价值。
业务场景
PTS广泛应用于各种压力测试和性能测试场景,包括但不限于以下场景:
PTS孵化于服务阿里巴巴全生态五年以上的单链路、全链路压测平台,是阿里巴巴内部最佳实践的输出。该平台对内除了支持日常的外部流量压测之外,同时支持了大大小小的促销活动,如天猫双11、双12和年货节等。
压测流程
PTS提供全面高效的压测流程:
压测流程说明:
1.在PTS控制台上,准备压测API数据,构造压测场景,定义压测模式、量级等;支持随时启停压测,压测过程中可调速。
2.压测启动后,PTS后台的压测控制中心将自动调度压测数据、压测任务和压测引擎。
3.通过随机调度全国上百个城市和运营商的内容分发网络CDN (Content Delivery Network)节点,发起压测流量。保证从虚拟用户并发量、压测流量的分散度等维度都接近真正的用户行为,压测结果更加全面和真实可信。
4.通过压测引擎向您指定的业务站点发起压测。
5.压测过程中,通过集成云监控、ARMS(应用实时监控服务)产品,结合PTS自有的监控指标,实时采集压测数据。
6.在PTS控制台,实时展现压测数据,进行过程监控;压测结束后,生成压测报告。基于整个压测场景的性能表现,定位性能问题、发现系统瓶颈。
压测创建方式
PTS支持以下4种方式创建压测场景(或称压测用例),如下图所示:
说明:
方式一:PTS自研零编码可视化编排,使用自研强大引擎压测。
方式二: 使用PTS自研云端录制器,零侵入录制业务请求并导入1中的自研交互中进行进一步设置。
方式三: 将导入脚本压测 1中的PTS自研交互中,使用PTS自研引擎。
方式四:JMeter压测并使用原生JMeter引擎进行压测,PTS提供自定义的压力构造和监控数据汇聚等产品服务。
其中,方式一、二、三由于使用了PTS的自研引擎,具备RPS(Requests per Second)吞吐量压测模式、秒级启动、实时控制、定时压测和流量遍布全国运营商网络的差异化能力。
方式一是PTS最核心的一种压测场景创建方式,所有资源包均可使用。其他几种创建方式面向不同规格资源包开放。
适用于多业务场景
不论您处于哪个行业,在以下业务场景(但不限于),PTS都是您值得信赖的性能测试工具。
适用行业广泛
PTS应用行业广泛,涉及电商、多媒体、金融保险、物流快递、广告营销、社交等等。
PTS服务阿里巴巴全生态多年,支持了天猫双11、双12、年货节等大促活动。植根于电商行业的PTS,对电商的典型业务模型支持得更友好,压测来源更广泛,脉冲能力和流量掌控能力更强。
PTS自商业版发布以来,吸引了来自多媒体、金融保险、政务等众多行业的用户,以其强大的压测场景编排能力和报表能力,帮助用户快速发现问题,进行针对性地调优,提升了系统承压能力。
适用于多种网络环境
不论您的业务位于公有云、专有云、混合云或者自建IDC中,只要能够通过公网访问,PTS都能够通过遍布全国上百个城市和各运营商的CDN节点发起压测流量,最大程度地模拟真实业务场景。
适用于使用HTTP/HTTPS/WebSocket等协议的客户端
PTS本身的GUI模式支持HTTP/HTTPS协议的压测,无论您的客户端是自研的App、移动端网页、PC端网页、微信小程序还是C/S结构的软件,都可以使用PTS进行压测。PTS同时集成了开源JMeter,支持更多的协议和场景,例如您可以通过“JMeter + WebSocket插件”的方式,对使用WebSocket协议的客户端进行压测(在PTS上传相应的插件JAR文件即可),其他协议以此类推。
下面以电商典型业务场景为例,为您介绍如何在PTS中编排压测场景。
什么是压测场景
要发起一次性能压测,首先需要创建一个压测场景。压测场景中包含一个或多个并行的业务,每个业务包含一个或多个串行的请求。
示例
淘宝网需要对产品A和B相关的页面(即存在多个API)进行压测,假设其主要业务场景为:
业务A:浏览产品A。
业务B:购买产品B(登录 → 浏览产品B → 加入购物车 → 提交订单)。
那么在压测场景中的设置如下。
串联链路1:浏览产品A 和串联链路2:购买产品B是并行关系。
根据业务逻辑,一部分用户在浏览产品A,另一部分用户在进行购买产品B的一系列操作,即两个业务是同时发生的,所以将它们设置为两个串联链路,压测中会并行发起请求。
串联链路中的多个API是串行关系。
根据业务逻辑,串联链路2:购买产品B中的一系列用户行为是存在先后顺序的,所以将这些存在先后关系的API添加到一个串联链路中,PTS压测中会按照顺序发起压测。
综合来看,在压测中,示例中的浏览产品A的API和登录的API,会同时发起压测流量。更多性能测试PTS场景示例,可参考阿里云帮助资料: 性能测试 PTS最佳实践
现在全链路越来越火,各大厂商也纷纷推出了自己的全链路压测测试方案。特别是针对全链路压测流量模型,各家方案都有所不同。最近我看了一些这方面的资料,有一些感悟。分享给大家。
全链路压测流量模型的梳理呢,这里就先不讲了,各家公司自有司情在。因为主要是全链路压测模型的实现,其实实现也对应了流量模型的梳理结果。
业界常用的三种方一种:是基于业务模型的实现,一种是基于真实流量的录制回放,最后一种是灰度分流。
这个是一种比较常用的方式。首先要对公司业务模型进行梳理,也就是说对公司的业务链路进行梳理。这里的业务链路可能会比较复杂,不是像很多案例中到的了就非常流行畅的一条链路,中间很有可能会出现各种各样的支路。如果图图形化展示的话,某一条链路应该就是一个树形结构。树形结构的开始是用户的入口页一般就是入口页面的登陆,或者说是首页接口。树形结构的右侧是用户的出口,这里根据业务模型不同,用户的出口会非常的多,所以大多数来时候来讲,这就是一个分叉的树形结构。
要对这样的流量模型进行实现。是比较困难的。首先要梳理出这样的业务模型,就不太容易,再加上接口的相互调用啊,数据之间的相互依赖又可能是复杂程度增加一个量级。所以一般的实现方式就是做归拢。将比较复杂的树形结构简单化,或者干脆将以个业务联络分解成n个列有链路。然后分别实现。最终将流量汇聚,就变成了整个业务链路的流量模型实现。
在业务模型实现这个方向,各家都有不同的实现方式啊,基本上就分为工具以及脚本实现。我自己不怎么用工具做过接口的性能测试,全都是使用java和groovy脚本去实现的。首先,我会实现一个基于接口的业务测试框架,将每一个接口封装成一个方法。接口的参数即是这个方法的参数。然后将每一个用户封装成一个对象。将用户的各种信息变成这个对象的属性。然后用户在请求不同的接口的时候对用户的属性进行赋值这样就达到了一个参数传递的目的。然后通过调用不同的方法,我们就可以实现对不同接口的请求。通过控制参数或者说接口请求的频率,我们就可以达到控制当前用户。在整个业务链的走向。
基于流量录制和回放,这个是最容易实现的方式。也是最容易贴近真实情况的方式。哦,我接触到的主要有一个回放模型,就是用golang语言写的goreply。go语言的性能是非常好的,用于性能测试足够满足用户的需求。大多数公司都会选择在原生引擎的基础上做一些封装。然后对对业务进行一些兼容,最主要的还是适配流量来源。通常流量的来源是通过日志文件来获取的,但是我看行业内也有通过一些固定的流量存储分析引擎去完成。这里的技术我不是太熟,也就不多分享啦。
我觉得基于流量录制回放这种模式有一个比较难以解决的问题:流量的不可见性。一般来说,录制流量会非常大。介于几十万上百万之间。这么规模大的流量,是很难对他进行可视化的。常遇到的一个问题,就是对于一些请求量非常小的接口。录制的时候可能会录丢。还有一种就是录制流量的时间范围不会太广。那么录制出来的流量文件只能反映录制时的流量模型,并不能反映其他录制时间段的流量模型。如果某个服务的流量是根据时间变化的。那么就需要对多个时间段都录制流量,然后进行合并。由于流量的不可见性,所以对流量的模型进行分析,就会显得比较麻烦。
这是我在某个会议上看到大佬分享的一个方案。灰度大家听的可能比较多的是灰度发布。就是将服务或者app更新范围限制在某些一批人,或者说某个地理范围。这里讲的灰度分流,其实核心上差不多,就是将线上的一部分流量转到某些机器上。以实现对这些机器所在服务的一些压测。这种方案。基于线上流量完成,所以几乎不需要测试。投入过多的资源进行开发实现。这种方案有点儿基于业务模型和基于流量录制取了一个中间态。既能保证流量的真实有效性。又可以避免开发测试脚本带来的负担。
这种方式对于公司的架构,主或者说是分流的实现来说,技术难度是比较高的。因为他用的全都是用户的真实数据,所以一旦出现问题的话,这个问题影响范围不太可控,而且比较严重。对于接收灰度分流流量的机器来说,压测流量完全真实。但是他也无法避免基于流量录制,回放同样的问题。就是流量的不可见性以及流量与时间可能存在于一个关联关系并不是线性的。甚至这一点流量的灰度分流还不如流量的录制与回放。我想这也是。我身边接触到的公司,都没有采用这种方案的原因吧。 关于全链路压测开源工具和全链路压测技术 架构的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 全链路压测开源工具的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于全链路压测技术 架构、全链路压测开源工具的信息别忘了在本站进行查找喔。
发表评论
暂时没有评论,来抢沙发吧~