精准容量、秒级弹性,压测工具 + SAE 方案如何完美突破传统大促难关?
作者 | 代序 阿里云云原生技术团队
本文整理自《Serverless 技术公开课》,“Serverless”公众号后台回复“入门”,即可获取系列文章 PPT。
导读:本次课程介绍在 SAE 场景下,如何借助压测工具与 SAE 弹性能力来应对大促的实践。主要包含 3 部分要点:传统大促面临的挑战、SAE 大促方案以及快速压测验证。
传统大促挑战
一次常见的大促活动,技术人员通常会从下面几个方面着手,进行准备工作:
架构梳理:对参与大促的服务,进行系统性的架构梳理;
容量规划:结合架构梳理,确定系统 SLA 指标,形成容量模型,帮助业务进行评估;
性能测试:核心系统的单机容量评估,与核心链路全链路压测,可以验证容量模型,发现系统存在的问题;
应用/数据库优化:对发现的系统问题,譬如热点、死锁或慢 SQL 等,进行优化,确保系统可以支撑大促;
准备扩容方案:通过容量规划与性能测试,可以确定一套满足活动需求的扩容方案,既保障业务,又降低成本;
应急预案准备:当遇到突发情况如何应对,譬如业务降级,砍掉非核心逻辑,或者限流降级,保障核心链路稳定;
大促在线应急保障:专人专项,对问题进行响应,执行应急预案。
要完成上述准备工作,经常会遇到如下痛点:
系统核心全链路,缺少全局关系视角。需要花大量时间,整理依赖关系。
链路上下游问题、定位问题比较耗时。压测与在线应急保障过程中,汇总链路上下游问题,定位问题比较耗时,缺少快速定位分析工具。
业务开发迭代快,需要常态化压测支持。大量重复性人力投入,给大家造成很大负担。
预留资源成本高,需要频繁扩缩容。需要产品化支持自动弹性伸缩,降低自建机房等高成本高闲置的固定投入。
SAE 大促解决方案
首先,SAE 是一款面向应用的 Serverless PaaS 平台,在传统 PaaS 功能之外,提供了完备的全链路监控、微服务管理等能力,并借助 Serverless 能力,最大程度进行快速扩缩容、降低手工运维成本。
SAE 提供的解决方案,将从三方面入手:
指标可视化:借助应用监控 ARMS 提供丰富的 JVM、全链路 Tracing 、慢 SQL 等功能,便捷地评估水位、定位问题;
应用高可用:借助 AHAS 限流降级能力,流量激增时,保护核心服务,保障可用性不完全跌 0;
性能压测:借助压测工具如 PTS,模拟单机压测或全链路压测,验证容量规划、发现应用问题。
快速压测验证
那么如何通过 SAE ,进行一次快速的大促压测验证呢?下面将进行一次完整的展示:
第一步:观察应用监控指标,大致拟定弹性/压测/限流降级
通过观察应用监控,对日常业务的监控指标,有一个大致的概念。以一个典型的电商类应用为例。
从监控情况看:
该应用为 HTTP 微服务应用;
应用依赖大量 HTTP 微服务调用,少量使用 Redis / MySQL 服务,适合使用单机 + 分布式压测工具,分别进行压测;
QPS 指标,相比 CPU、MEM 和 RT 指标,对业务更敏感,更适合作为弹性策略指标。
第二步:选择合适的压测工具
根据业务诉求,可以选择快速使用的工具,或功能完整的压测工具。
譬如单机 HTTP 压测工具 ab、wrk,可以提供简单快速的压测方式,但只支持单机、不支持上下文。
如果我们需要支持 WebSocket 、常态化压测,云产品 PTS 可以提供较为完整的服务,相比自建成本更低。
第三步:配置 SAE 弹性伸缩策略 + AHAS 限流降级策略
无需精准设置,选择一些合适的指标,配置 SAE 弹性伸缩策略,或额外配置 AHAS 限流策略 / ARMS 告警。
对 API 类型,可通过对 API QPS、SQL QPS 等指标进行限流,保障超过系统水位的请求,快速 failover,降低对容量内业务的 SLA;并选择应用监控指标 QPS、RT,配置弹性规则,让系统进行弹性伸缩;
对于计算型应用,则可选择更敏感的指标,如 CPU、Memory 对应用进行扩缩容。
第四步:执行压测 – 观察结果 – 优化代码 – 调整策略配置
1)根据压测与监控结果,看是否有必要优化代码,或调整 SAE 弹性伸缩策略、AHAS 限流策略。 2)执行压测,查看压测结果,发现存在失败请求。 3)查看监控异常,发现存在 GC 异常。通过 SAE 控制台,优化 JVM 参数解决。 4)再次压测,验证问题是否解决。 5)如此重复一两轮,解决其中发现的主要问题,可以更从容地面对大促。
详细演示过程请点击【视频课链接】进行观看。
课程推荐
为了更多开发者能够享受到 Serverless 带来的红利,这一次,我们集结了 10+ 位阿里巴巴 Serverless 领域技术专家,打造出最适合开发者入门的 Serverless 公开课,让你即学即用,轻松拥抱云计算的新范式——Serverless。
点击即可免费观看课程:https://developer.aliyun.com/learning/roadmap/serverless
精准容量、秒级弹性,压测工具 + SAE 方案如何完美突破传统大促难关?的更多相关文章
- [SCF+wetest+jmeter]简单云性能压测工具使用方案
前言 压测太难?局域网压力无法判断服务器网络指标?无法产生非常大的并发量?云性能太贵? 也许我们可以把各种简单的工具拼起来进行压力测试! 准备 https://cloud.tencent.com/pr ...
- 在Mac上利用压测工具Jmeter-Suite进行一次压测实践的保姆级详细步骤(参考腾讯云文章)
参考的文章 压测工具Jmeter-Suite详细操作步骤 写此文的目的 由于我是刚开始接触kubernetes和jmeter,所以在学习过程中遇到了很多很多问题,同时我很烦恼为什么网上没有文章是从真正 ...
- 018 磁盘 IO 性能监控/压测工具(sar、iotop、fio、iostat)
1 sar 命令查看当前磁盘 IO 读写 sar(System Activity Reporter 系统活动情况报告)是 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告 ...
- Http压测工具wrk使用指南
用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...
- web压测工具http_load原理分析
一.前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/ ...
- [软件测试]网站压测工具Webbench源码分析
一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...
- Http压测工具wrk使用指南【转】
用过了很多压测工具,却一直没找到中意的那款.最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好. 安装 wrk支持大多数类UNIX系统,不支持windows.需要操作系统支持 ...
- Http 压测工具 wrk 基本使用
Http 压测工具 wrk 基本使用 Intro wrk 是一款现代HTTP基准测试工具,能够在单个多核CPU上运行时产生显着负载.它将多线程设计与可扩展事件通知系统(如epoll和kqueue)结合 ...
- 网站(Web)压测工具Webbench源码分析
一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...
随机推荐
- go逃逸分析
目录 1. 前言 2. 逃逸策略 3. 逃逸场景 3.1 指针逃逸 3.2 栈空间不足逃逸 3.3 动态类型逃逸 3.4 闭包引用对象逃逸 4 逃逸总结 5. 注意事项 1. 前言 所谓的逃逸分析(E ...
- 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建一个版本
我们可以使用官方 sentry-cli 工具操作 Sentry API,从而来为你的项目管理一些数据.它主要用于管理 iOS.Android 的调试信息文件,以及其他平台的版本(release)和源代 ...
- 取消Ubuntu开机硬盘自检
修改/etc/fstab文件,最后一列全改为0,测试能正常启动,尚未出现再次自检的情况 sudo gedit /etc/fstab
- java对象的引用级别
解释 在java中也有引用的概念,其实就可以认为是变量.标题中的引用级别是指变量与对象之前的引用级别.java中分为4种,按引用强弱关系排序分别是:强引用.软引用.弱引用.虚引用. 强引用(Stron ...
- k8s笔记0528-基于KUBERNETES构建企业容器云手动部署集群记录-2
三.ETCD集群部署 类似于走zookeeper集群分布式协调服务,可做以key v形式存储在ETCD中. 官方链接:https://github.com/coreos/etcd 分布式kv存储,为分 ...
- android kotlin determine file type from bytes 根据文件内容识别文件类型,类似python的filetype
尝试了 URLConnection.guessContentTypeFromStream(ByteArrayInputStream(bytes)) 和 Tika().detect(bytes) 一个识 ...
- Spring系列之Mybatis动态代理实现全过程?回答正确率不到1%
面试中,可能会问到Spring怎么绑定Mapper接口和SQL语句的.一般的答案是Spring会为Mapper生成一个代理类,调用的时候实际调用的是代理类的实现.但是如果被追问代理类实现的细节,很多同 ...
- 运输层协议:TCP连接建立与释放
TCP的特点 面向连接:TCP是面向连接的运输层协议,通过TCP发送数据需要先建立连接,通信结束后需要释放连接 可靠传输:TCP实现了可靠传输,使得数据能够无丢失.无差错.不重复地到达接收端 面向字节 ...
- Linux 配置Maven(避免踩坑篇)
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 一.访问Maven官网下载压缩文件. 二.下载好的maven安装包放在磁盘的 /usr/local/ 目录下,如下图: 三.解压该压缩文 ...
- Java == 和 equals的区别
== 是操作符,equals是方法. 对于基本类型变量来说,只能使用 == ,因为基本类型的变量没有方法.使用==比较是值比较. 对于引用类型的变量来说,==比较的两个引用对象的地址是否相等.所有类都 ...