作者:拂衣
引言
“压测脚本在我压测环境上跑的好好的,成功率、RT 都很正常,放到本地跑怎么表现就不一样了?”
大家压测时是否都遇到过上述问题?
除了老生常谈的硬件配置原因,流量分布因素往往容易被忽略。
为什么要模拟真实用户流量
压测是为了模拟一定量的真实用户对系统进行访问。真实的用户量可以通过设置并发线程数(虚拟用户数)来模拟;用户的来源分布,具体说是流量分布,也是重要的模拟条件。
辅助全局容量规划
用户量较大的应用,一般会采用异地多活的部署方式。出于成本考虑,各中心部署规格不一定相同,当地用户越多,中心实例数越多,规格越高。大促压测就是要按照真实用户分布比例,来模拟流量。测试出哪些中心容量水位过高,会造成当地用户响应延迟甚至服务崩溃;哪些中心容量水位又过低,可以适当降级,将多余的实例额度合理分配出去。实现从全局层面规划容量,在撑住大促流量的同时,也合理控制成本。
测试出真实相映延迟
数据表明,对于电商业务核心接口,响应时间每增加 100ms,营收额对应下降 1%。如果施压机和服务器在同一机房,测试出的请求响应时长(RT)会比真实情况要低,因为用户是全国分布的。对响应延迟误判低出的零点几秒,就可能会造成对大促成交额的错误预期。
通过下图可以直观的看出问题:
如何模拟真实流量
传统方案
大部分业务的用户并不是按地域均分的,相反,往往很不均匀。要模拟真实流量分布,施压机需要在各地分散部署,并且支持按地域、按量分配,在压测时,还要支持实时的统一调度。如果施压机都分布在一个 Region,甚至是一个可用区内,那是无法模拟出来自全球用户请求的。
这样就需要在国内和海外部署大量的施压机,如果压测频率并不很高,那机器的闲置成本可想而知。而按地域、按量分配的调度系统,也需要一定的维护成本。
阿里云 PTS 方案
使用阿里云性能测试服务(PTS)压测时,开启流量地域定制功能,即可指定施压机的地域分布,目前支持全球 22 个 Region 的地域定制。阿里云 PTS 作为大促压测重武器,“威力”不减,上手更轻量化。
支持地域见表格:
无论选用哪种方案,最终都要达到施压机地域分布和用户分布一致。
操作指南
1、创建一个压测场景,参考 PTS 指导文档(具体请见文末相关链接);
2、在施压配置中,打开流量地域配置,按业务需求分配流量比例,右侧可以看到流量分布的饼图:
3、开始压测,在压测概览页,可以查看流量地域分布:
总结
压测时,压力流量来源是一个很容易被忽略的因素,要保证压测结果真实可信,就需要按照真实用户的地域分布来准备施压机。阿里云 PTS 提供了流量地域定制功能,即压即用,支持全球 22 个 Region,9.9¥体验版资源包即可使用。
相关链接
1)阿里云PTS:
https://pts.console.aliyun.com/#/overviewpage
2)开通PTS体验版资源包
https://common-buy.aliyun.com/?commodityCode=ptsbag#/buy
3)PTS 指导文档https://help.aliyun.com/document_detail/90887.html
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。