前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5分钟入门云压测,轻松应对流量高峰,无惧高负载!

5分钟入门云压测,轻松应对流量高峰,无惧高负载!

作者头像
腾讯云可观测平台
发布2023-04-22 13:10:17
7570
发布2023-04-22 13:10:17
举报

作者简介: 柯开,腾讯云高级工程师,腾讯压测领域 OTeam PMC,负责腾讯云可观测-云压测产品设计研发。

前言

在当今数字化的时代,越来越多的应用程序和服务都被迁移到云上运行。性能测试,正是变更前验证的关键一环,是对系统进行全方位的性能“体检”。它一般通过模拟用户操作,使系统处在高强度压力之下,检验系统是否稳定、哪里会出问题。

随着分布式、微服务、云原生等架构的发展,性能测试面临了新的挑战。

  1. 分布式系统的复杂性和较高的网络通信延迟,使得性能测试难以规避设计上的死锁、竞争条件、资源泄露等问题。
  2. 微服务架构的应用程序本身就是由多个微服务组成,而这些微服务之间存在耦合性以及状态多变等问题,使得测试变得更加复杂。
  3. 云原生应用程序意味着大规模应用程序的部署和管理,因此需要更加复杂的性能测试,相应的测试工具和技术也需要不断更新。

为此我们打造了腾讯云可观测-云压测(Performance Testing Service, PTS),一款分布式性能测试服务,可模拟海量用户的真实业务场景,全方位验证系统可用性和稳定性。支持按需发起压测任务,提供百万并发多地域流量发起能力。

提供流量录制、场景编排、流量定制、高级脚本定制等功能,可快速根据业务模型定义压测场景,真实还原应用大规模业务访问场景,帮助用户提前识别应用性能问题。

云压测目前已经支持原生 JMeter 压测,白屏录入以及高级脚本模式,支持十几种协议,还具备常态化压测、持续测试、集成腾讯云可观测产品生态等能力,提供最佳实践方案,保障业务性能质量。

压测常见痛点

常见痛点如下:

  • 测试框架产品繁多,用户需要在各种产品间切换以满足不同的测试场景。
  • 缺乏统一、多维度、全生命周期的可观测方案,将测试监控链路与业务监控链路集成,导致压测后仍很难定位问题根因或性能瓶颈。
  • 测试场景构建繁琐,且需要维护多套测试环境,测试数据不能做到线下线上复用。
  • 手动回归测试执行起来费时且费用高昂,业务无法频繁发布软件,开发者无法快速获得反馈。
  • 人工检查和测试不可靠,手动回归测试等重复性任务中通常很难有一致性表现,并且很难通过检查来预测复杂软件系统的更改会产生什么样的影响。
  • 业务部署结构复杂,缺乏系统全局拓补结构图及链路监控数据,性能问题排查困难,缺乏有效工具分析排查系统关键瓶颈点。
  • 秒杀抢购等场景需要大量机器多地域部署模拟海量用户的真实场景,压测资源利用效率低。

云压测优势

优势如下:

  • 提供一站式测试问题分析平台,打通监控链路,提供客户端、应用服务器、数据库、中间件、网络入口等各方面的指标,自动化识别指标异常。
  • 集成不同的压测引擎,提供压力测试,拨测,接口测试,mock service等功能,覆盖用户从开发到上线后的整体生命周期。
  • 快速获取浏览器、移动端、线上环境真实数据,提供高质量的测试数据帮助业务模拟用户真实的使用场景。
  • 创建并定制快速可靠的自动化测试套件,自动测试在持续交付流水线中运行,帮助业务快速构建高质量软件。
  • 基于 K8s 弹性能力,边压边弹,降低测试成本。
  • 打造开放数据体系,基于 OpenTelemetry 规范,支持压测数据旁路,与三方监控系统互联互通;提供 OpenAPI,提供三方业务集成。

云压测功能特点

云压测可以分为两个部分来看:一个压测服务的 PAAS 平台以及可插拔的压测引擎。

PAAS 平台主要提供压测通用功能:

  1. 压测资源动态调度,用户无需准备机器。
  2. 支持测试任务编排,测试数据管理以及测试报表生成。
  3. 压测配套功能如:定时压测,服务mock, 流量录制等等。
  4. 统一的前端界面,不同引擎接入,提供相同的使用体验。

可插拔三方引擎集成:

  1. 提供三方引擎标准接入方案。
  2. 三方引擎可灵活接入,引擎动态插拔。
  3. 不同引擎/协议基于 OpenTelemetry 规范生成相同报表。
  4. 引擎只提供单机实现即可,由 PAAS 平台完成引擎分布式调度及数据聚合。
  5. 目前云压测已支持 JMeter, 自研 JS 引擎,golang-plugin 引擎(支持 go 语言编写用例,用户可复用存量 go 包)。

开放数据体系:

  1. 基于 OpenTelemetry 规范,支持压测数据旁路,与三方监控系统互联互通。
  2. 提供 OpenAPI, 提供三方业务集成。

快速上手云压测

云压测支持多种压测模式,适用于不同阶段的用户,总有一款适合您。无论是要压测不同的协议:http, websocket、grpc 等,还是同时压测数十种不同服务, 您都可以进行快速压测。

一、简单模式,零代码开始压测

简单模式非常直观,适合快速上手。通过控制台的图形界面,可视化、零代码实现请求链路编排。支持 HTTP 协议的 GET,POST,PUT,PATCH,DELETE 请求。

在新建场景页面时选择简单模式。

无需填写任何代码,直接构建 http 请求,以一个 HTTP Get 请求为例,您可以配置其 URL、请求参数(URL query string)、认证方式、请求头、请求体、检查点等。

如下图所示,我们可以快速地建立"GET"、 "POST"、 "PUT"、 "PATCH"、 "OPTIONS"、 "DELETE"、 "HEAD"的HTTP请求。在图中我们定义全局变量name, age。我们可以在定义请求的任何地方,比如url, 请求参数,header等通过${}来引用变量。

设置全局变量值时,除了直接输入数据,还可以用?{{xx}}?的形式,由函数计算得来。云压测支持原生ES5 语法,任何原生的js函数都可以通过{{}}引用。常见函数可参考Javascript标准内置对象链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects。

您还可以通过 UI 方式设置断言,判断返回的响应是否符合您的期望。以下配置检查 response code 是否等于 200, 以及响应体中 json 字段 args.name 值是否为 lucy。

2. 脚本模式,十多种协议支持,模拟复杂用户场景

有时候,我们需要更加灵活地编写用例,例如需要使用 if、for、sleep 等方法来控制压测流程,那么脚本模式的编排功能可以很容易地满足您的需求。

脚本模式当前已经支持 http、https、http2、websocket、grpc、protobuf、trpc、socketio、tcp/udp、sql、redis 等协议。您可以在脚本自由组合各种协议来模拟压测场景,还可以在同一个脚本中既包含 http 请求,也包含 grpc 请求,或者其他任何类型请求。云压测会根据不同类型的请求生成统一报表。

PTS 兼容 JavaScript ES2015(ES6)+ 语法,并提供额外函数,帮助您在脚本模式下,快速编排压测场景。您可在控制台的在线编辑器里,用 JavaScript 代码描述您的压测场景所需的请求编排、变量定义、结果断言、通用函数等逻辑。

在创建用例中,通过以下入口可以进入脚本编写模式。?

以下是一个简单的 http demo, 您可以在脚本中编写任意请求,打印数据,以及校验返回结果是否符合您的期望。?

您也可以用 PTS 模拟 websocket 请求。

WebSocket?是一种应用层通信协议,可在单个 TCP 连接上进行全双工通信。

不同于 HTTP 请求的客户端发起、服务端响应的一问一答模式,WebSocket 连接一旦建立,直到连接关闭之前,客户端、服务器之间都可源源不断地、双向地交换数据。因此,在压测场景中,基于 WebSocket 请求的脚本与基于 HTTP 请求的脚本,其结构和作用机制有所不同:

执行 HTTP 脚本的每个 VU 会持续不断地迭代主函数(?export default function() { ... }?),直到压测结束。

执行 WebSocket 脚本的每个 VU 不会持续迭代主函数,因为主函数会被建立连接的?ws.connect?方法阻塞,直到连接关闭。而在连接建立后的回调函数里(?function (socket) {...}?),会持续不断地监听和处理异步事件,直到压测结束。

3. JMeter 压测,秒级拉起集群,支持百万并发

您是否还在为如何搭建 JMeter 集群而发愁?

使用腾讯云云压测,您不需要去准备机器,不需要搭建 JMeter 分布式集群,也不需要花时间去给机器初始化。

只需要上传的 jmx 文件,以及依赖的其他数据文件,即可一键开启 JMeter 百万并发压测。在场景中配置的压力模型,会重写 jmx?文件中主线程组的配置,不会影响 setUp 和 tearDown 线程组。云压测会基于用户并发压力,将 jmx 线程组按比例拆分到不同机器上,以集群模式调度整个压测服务运行。

通过以下入口进入 JMeter 压测 :

设置施压模型,填写您期望的 100W 并发数,云压测会自动为您拉起 JMeter 压测集群,分布式在多个地域,多个机器上为您执行压测。

上传 jmx 文件以及任何您想自定义的 JMeter 参数或者其他依赖 jar包,csv文件等。点击保存并运行,即可一键开启压测。?

总结

只有进行充分的性能测试,才能发现应用程序在各种网络连接、流量负载以及安全防御方面存在的潜在问题,确保应用程序的稳定性和可靠性。通过云压测,您将能够更好地评估和调整您的云服务以及应用程序,以满足不断变化的业务需求和用户需求,获得最佳的用户体验。

云压测支持百万并发压测,100% 兼容 JMeter,可轻松应对流量高峰,无惧高负载,保障系统稳定性。新老用户可享受不同程度优惠。

新用户:免费领取尝鲜包,不限地域,2万 VUM 可免费使用一个月!

VUM:VUM 是压测资源消耗的计量单位,VUM = VU(最大并发数) * Min(分钟),即并发运行时长。如1000VUM = 1000并发运行1分钟,也等于500并发运行2分钟。

老用户:可在2023年4月15日-4月24日,参与云压测新品特惠活动,套餐包限时限量优惠。全场6折,快来探测您业务系统的“极限并发”吧~

各套餐包规格对照表:

扫码下方查看云压测特惠活动详情:

近期文章推荐:

联系我们

如有任何疑问,欢迎扫码进入官方交流群~


欢迎关注腾讯云可观测,了解最新动态

?点击阅读原文立即进入云压测上线大促活动

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-04-18,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 腾讯云可观测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简单模式,零代码开始压测
  • 简单模式非常直观,适合快速上手。通过控制台的图形界面,可视化、零代码实现请求链路编排。支持 HTTP 协议的 GET,POST,PUT,PATCH,DELETE 请求。
相关产品与服务
云压测
云压测(Performance Testing Service, PTS)是一款分布式性能测试服务,可模拟海量用户的真实业务场景,全方位验证系统可用性和稳定性。支持按需发起压测任务,提供百万并发多地域流量发起能力。提供流量录制、场景编排、流量定制、高级脚本定制等功能,可快速根据业务模型定义压测场景,真实还原应用大规模业务访问场景,帮助用户提前识别应用性能问题。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com