聊个简单的话题:如何分析性能需求?

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 一般来说,云服务的可用区,可以理解为同一个机房的不同虚拟机集群。为了避免某个可用区由于网络硬盘等原因损坏导致服务不可用,跨可用区的服务部署是一种常见的容灾手段。

前言


前几天在北京出差时候,微信群有个同学问了一个问题,为什么800并发压测,服务器还没有报错?当时群里其他同学提了很多观点,比如:


  • 并发不够,加并发!
  • 要不要考虑首页进来多少人?
  • 是不是有限流,流量都被拦截了?
  • 我看CPU都打满了,压测要关注硬件指标!
  • 是不是你压测机配置比较低,无法发起这么多并发?
  • ............


林林总总感觉说了很多,又感觉都没说到位。正好周四时候,从同事那里听到一个性能需求,说来也蛮有意思的,需求大致是这样:网关要验证在跨可用区情况下,支撑20W的TPS。就这一句话,我当时有点诧异(以我对公司目前业务及架构的理解,根本不需要20W的TPS)。


那么问题来了:如果是你,听到这样“一句话需求”,你会如何分析,然后制定压测方案呢?


这篇文章,聊聊我对这个需求的一些理解和分析,以及我会如何设计性能测试方案。


需求评估分析


先来聊聊如何分析这个性能需求,关于性能需求分析,我总结下面几点roadmap:


640.png


接下来,按照上述思维导图,我会通过几个不同问题的解答,来描述我的分析思路。


谁提的需求,目的是什么?


研发同学提了一个性能测试需求:网关要验证在跨可用区情况下,支撑20W的TPS。


关键字提取:流量网关、跨可用区、20W的TPS


什么是流量网关?


简单来说,流量网关就是所有请求的流量入口,承载了所有用户请求。如下图所示:


640.png


如何理解跨可用区?


一般来说,云服务的可用区,可以理解为同一个机房的不同虚拟机集群。


为了避免某个可用区由于网络硬盘等原因损坏导致服务不可用,跨可用区的服务部署是一种常见的容灾手段。


流量网关有什么特点?


负载均衡:跨多个服务的动态负载均衡;

身份验证:即用户的身份鉴权,登录态、黑白名单等;

限流限速:基于速率、请求数、并发等维度进行流控;

其他特点:加解密、A/B测试、灰度发布、监控告警、服务治理等功能;


压测流量网关有什么难点?


网关是用户请求流量的入口,因此访问压力会很大,即我们常说的QPS很高。那么在压测时,要考虑下面几点:


  • 需要能支撑发起很多并发请求的工具;
  • 网关服务的应用需要部署集群,来应对高并发;
  • 由于只是跨可用区,一般云服务可控制在0.5ms以内;

在什么场景下为谁提供服务?


上面介绍了流量网关的特点,这里的场景指的是业务场景或者说测试场景,即:验证网关的哪些功能场景下的性能表现。上述的网关特点中,一般需要压测验证的场景有鉴权、加解密、身份验证。


目前系统架构调用关系是怎样的?


做性能测试,最怕的是不了解系统架构就开始无脑高并发!


了解系统架构及服务间的调用关系,才能设计合理的压测场景,准备对应的脚本和数据。


如何搭建满足需求的性能测试环境?


根据上面的分析,跨可用区的网关应用集群,在搭建环境时,需要考虑的有下述几点:


  • 集群均匀分布在不同可用区;
  • 网关应用的单机配置(比如8C16G);
  • 虚拟机型保持一致(内核版本、计算型/IO型);
  • 需要绑定专门的域名,SLB和带宽需要大于预期的指标;
  • 压测工具需要尽可能的支撑更高的并发流量发起(比如Wrk);
  • 因为涉及到鉴权和身份验证,需要提前预热相关的auth、token数据到缓存;


如何评估性能需求的技术指标是否合理?


上面提到了性能指标是20W的TPS,那这个指标是否合理呢?首先,性能需求的技术指标是否合理,要结合实际的业务场景和目前峰值流量及未来增长趋势来综合评估。


假设流量网关被所有业务接入,业务对RT比较敏感,业务请求RT的目标是10ms;目前的线上峰值QPS是5W-QPS,预计未来半年增长到10W的QPS,那这个时候,如何评估技术指标,或者说设定合理的技术指标呢?我们可以结合实际情况讨论,得到下面这样的一个技术指标:


ART&99RT:≤2ms;

安全水位下的QPS:≥10W;

TPS:统计核心业务的核心链路当前吞吐能力,做聚合计算,保持一定上浮;


当然,上述的指标有个前提:业务不接受有损。


如果业务接受有损,那么性能的技术指标无须这么苛刻(因为可以限流降级);


性能测试方案


说到了性能测试方案,我偶然翻出了19年6月份画的一个性能测试流程职责说明表,见下图:


640.png


聊到这里,该如何设计性能测试方案呢?答案已经在上述的需求分析里了。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
7月前
|
缓存 前端开发 JavaScript
优化前端性能:从理论到实践的全面指南
前端性能优化是提升用户体验的关键环节,但这一过程常被技术细节和优化策略所困扰。本文将系统地探讨前端性能优化的理论基础及实践技巧,包括关键性能指标、有效的优化策略、以及常见工具的应用。我们将从最基本的优化方法入手,逐步深入到高级技巧,为开发者提供一套全面的性能提升方案,以实现更快的加载时间、更流畅的用户交互体验。
|
7月前
|
NoSQL 关系型数据库 MySQL
排行榜系统设计:高并发场景下的最佳实践
本文由技术分享者小米带来,详细介绍了如何设计一个高效、稳定且易扩展的排行榜系统。内容涵盖项目背景、技术选型、数据结构设计、基本操作实现、分页显示、持久化与数据恢复,以及高并发下的性能优化策略。通过Redis与MySQL的结合,确保了排行榜的实时性和可靠性。适合对排行榜设计感兴趣的技术人员参考学习。
803 7
排行榜系统设计:高并发场景下的最佳实践
|
10月前
|
存储 并行计算 算法
【深度挖掘Java性能调优】「底层技术原理体系」深入挖掘和分析如何提升服务的性能以及执行效率(性能三大定律)
【深度挖掘Java性能调优】「底层技术原理体系」深入挖掘和分析如何提升服务的性能以及执行效率(性能三大定律)
124 0
|
7月前
|
架构师 NoSQL 中间件
挑战架构师极限:分布式锁的四种实现方式,优劣对比让你一目了然!
【8月更文挑战第29天】在2024年软考架构师考试中,掌握分布式锁的实现方法极其重要。本文详细介绍了基于数据库、Redis及ZooKeeper三种常见分布式锁方案。数据库锁简单易懂但性能低;Redis锁性能优越且支持自动续期,但需引入中间件;ZooKeeper锁可靠性高,适用于分布式环境,但实现复杂。通过对比各方案优缺点,帮助考生更好地应对考试,选择最适合业务场景的分布式锁策略。
666 0
|
运维 监控 Java
03-揭秘大厂性能方案的奥秘!(下)
03-揭秘大厂性能方案的奥秘!
117 0
|
运维 监控 架构师
03-揭秘大厂性能方案的奥秘!(上)
03-揭秘大厂性能方案的奥秘!
106 0
|
监控 网络协议 Java
【深入了解系统性能优化】「实战技术专题」全方面带你透彻探索服务优化技术方案(系统服务调优)
系统运行缓慢,执行速度较差虽然没有对用户或公司造成实质性的损失,但它从侧面反映出系统在某些方面存在问题。可能需要对系统参数进行优化,或者对系统的设计和交互进行调整,这是后续系统性能优化的一个重要过程。我们将继续努力优化系统,以确保其高效运行和良好性能,以提升用户体验并最大程度地满足业务需求。我们希望通过系统调优的历程,解决当前存在的问题,并不断改进系统的运行,为用户提供更好的服务。
392 0
【深入了解系统性能优化】「实战技术专题」全方面带你透彻探索服务优化技术方案(系统服务调优)
|
存储 缓存 NoSQL
【分布式技术专题】「架构实践于案例分析」盘点高并发场景的技术设计方案和规划
【分布式技术专题】「架构实践于案例分析」盘点高并发场景的技术设计方案和规划
406 0
【分布式技术专题】「架构实践于案例分析」盘点高并发场景的技术设计方案和规划
|
存储 运维 负载均衡
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析
440 0
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析
|
存储 JSON NoSQL
「数据密集型系统搭建」原理篇|夯实基础,灵活设计
数据建模规范、常识、技巧很多,本章从万事开头难的数据建模开始,剖析下数据选择上有哪些常见设计规则,看看这些约束或经验背后蕴含着哪些出色的项目实践总结,在数据类型的选择上如何进行合理选择和取舍方案的。
505 0
「数据密集型系统搭建」原理篇|夯实基础,灵活设计