大、中型互联网企业该如何进行高并发压力测试
在直播、电商、游戏等用户密集型互联网行业,访问并发数通常是非常大的,所以一般会采用产品逻辑优化,倒计时延后请求等方式来缓解瞬时的大并发,如银行系统繁忙提示使...
在直播、电商、游戏等用户密集型互联网行业,访问并发数通常是非常大的,所以一般会采用产品逻辑优化,倒计时延后请求等方式来缓解瞬时的大并发,如银行系统繁忙提示使用其他支付方式,但这样并不能回避系统本身在压力下潜藏的性能问题。那么企业该如何正确发起高并发,如何知道该架构能支持多大的高并发呢?
这里需要明确一些概念:并发用户、在线用户和注册用户以及彼此之间的换算方法(估算模型)。系统的最大并发用户数根据注册用户数来获得,换算方法一般是注册总人数的5%-20%之间;系统的并发数根据在线人数来获得,换算方法一般是在30%左右;在线用户数理解为正在使用系统的用户数,而注册用户数是系统注册的人数,这个人数静态的。测试压力估算时采用如下原则:1、系统在线用户数取系统总用户数的20%;2、系统在线用户并发数取在线用户数的30%;云智慧压测宝给某个直播用户做了一次性能压测服务,达到了将近10万并发用户的要求,如下图所示:
压测宝目前已经能够满足大、中型互联网企业高并发压力测试需求,随着资源的不断增加,其压测能力还在迅速提升。云智慧压测宝特点概览除了全球分布式云端压测与应用性能管理产品透视宝深度融合进行问题诊断、支持大规模并发之外,压测宝还有很多特点:[1]天然适应移动互联网大多数互联网应用的业务过程都是通过调用自身或者第三方API来实现的,那么在业务上线之前,对API及其串接形成的业务过程进行压力测试是必不可少的。压测宝能够对后端服务的API请求及其调用过程 进行定义及测试,通过对API调用过程的正确性、可用性及响应时间在大规模压力条件下以及分布式地域环境中的质量来评估后端服务保障到位与否。[2]支持Percentile分析Percentile是统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数,可表示为:一组n个观测值按数值大小排列,如处于p%位置的值称第p百分位数。
实际上在Load Runner中就采用了这样的统计方法,因为在大数据量条件下,数据的筛选对分析的准确性尤为重要,压测宝也使用了这种方法来对事务或者请求进行详细的响应时间分析,如图所示,分析事务响应时间时系统默认提供了99%、95%、90%、80%选项,用户也可以自己定义百分位值。[3]支持多协议类型的框架压测宝默认支持的协议类型为HTTP/HTTPS,能够满足主流互联网用户的基本需求,但是某些金融和游戏类用户采用了特殊的Socket协议类型,此时如果需要支持的话,就需要在现有框架之上进行扩展,目前提供的框架机制如下图所示:
压测宝在整体框架设计上,包括整体的压测点资源调度、数据回传记统计分析、展现的逻辑使用的是同一套方案,只是在Agent数据采集与发送的时候用不同 plugin来兼容不同socket协议,因为每家客户都会有自己的Socket协议封装,这种方式确保了系统的整体可扩展性。[4]测试数据支持顺序和随机执行测试任务时,为测试脚本准备的大量模拟数据,这些数据与脚本中的变量关联,能够在某个时段内产生尽量真实的测试结果。在压测宝中可以方便得通过导入excel文件来创建测试数据,如下图所示:
在压测任务中指定脚本时可以为该脚本绑定测试数据,同时可以指定测试数据的加载模式,包括顺序与随机。当测试数据条目数量大于并发用户时选择顺序加载,确保用户不重复,对某些不允许用户重复登录或者提交的场景很有效果。
[5]支持接口正确性判断除了需要对接口的响应时间和可用性进行判断之外,还需要对事务或者接口的正确率进行验证,这里的正确率是指一段时间内,事务正确次数占事务总次数的百分比,即事务正确次数/事务总次数。事务正确:事务的所有请求都正确才为正确。请求正确:API接口断言正确则请求正确。在大量并发的情况下,有时候系统会出现“脏数据、错误数据”的情况——虽然接口可用,但是其返回结果并不是预期的值,所以在压测的时候有必要对接口返回结果进行检测,如下图所示,通过压测宝脚本配置,可以很方便地进行断言匹配设定与脚本验证:
[6]按区域进行性能分析分布式云端压测的一个特点是基于云端服务器在一段时间内发起大量并发,同时也体现了分布式用户对系统的真实访问情况,通过按区域分析,能够帮助用户了解不同区域发起的用户量以及每个区域的访问性能情况。
云智慧压测服务模式因为压测与后端性能分析分析的复杂性,推荐客户使用云智慧的压测服务,通过“一站式”性能压测服务,帮助企业评估应用性能容量,发现全链路性能瓶颈,从而保障产品交付满足企业灵活多变的业务需求。
云智慧的压测服务包括:
1、性能检测:通过系统处理能力(TPS)、响应时间、并发用户支持、稳定时间等性能指标判断性能极限;
2、性能诊断:针对压测请求,对后端代码、服务器、 数据库和主机性能进行分析诊断,定位性能瓶颈;
3、优化建议:针对应用架构、环境部署、代码开发及实施策略提供优化建议;
4、容量规划:基于压测数据和预测模型与业务发展趋势,提供容量规划建议。
云智慧建立了完整的压测服务体系,由性能测试专家组成服务团队,依托压力测试与性能管理平台为用户提供标准化压测服务,实现产品迭代全生命周期的性能持续改进:
1、需求沟通:进行需求调研和需求确认并完成《压测需求表》;
2、方案制定:确定压测场景和压测目标,沟通确认《压测方案说明书》;
3、部署实施:根据压测方案准备压测场景与资源,定制压测任务并在指定时间实施压测;
4、分析报告:实时跟踪压测进程,并对压测结果进行分析,结合性能管理产品深入解析应用后端性能,完成《性能分析总结报告》并提出问题处理建议;云智慧的服务理念是与用户一起成长,在过几年里,云智慧监控宝、透视宝伴随着用户在不断进步,相信压测宝的产品和服务也能为更多的小伙伴提高效率节约成本,帮助大家加速发展!