引言
“压测脚本在我压测环境上跑的好好的,成功率、RT都很正常,放到本地跑怎么表现就不一样了?”
大家压测时是否都遇到过上述问题?
在软硬件环境相同的情况下,看看哪个环境能更真实地模拟用户的网络环境、流量来源,就以其压测结果为准。如果本地和压测环境的流量来源都不够真实,那么压测结果,尤其是请求成功率和请求响应时长(RT)的可信度就要打个问号了。
压测是为了模拟一定量的真实用户对系统进行访问。真实的用户量可以通过设置并发数(线程数)来模拟,另一个同样重要的因素:网络环境,具体说是流量分布,却往往被忽略。
通过下图可以直观的看出问题:
如何模拟真实流量
传统方案
大部分业务的用户并不是按地域均分的,相反,往往很不均匀。要模拟真实流量分布,施压机需要在各地分散部署,并且支持按地域、按量分配,在压测时,还要支持实时的统一调度。如果施压机都分布在一个Region,甚至是一个可用区内,那是无法模拟出来自全球用户请求的。
这样就需要在国内和海外部署大量的施压机,如果压测频率并不很高,那机器的闲置成本可想而知。而按地域、按量分配的调度系统,也需要一定的维护成本。
PTS方案
PTS压测时,使用流量地域定制功能,即可指定施压机的地域分布,目前支持全球22个Region的地域定制。压测成本和正常压测保持一致,按照虚拟用户数计费,不会产生额外费用。
无论选用哪种方案,最终都要达到施压机地域分布和用户分布一致:
操作指南
-
创建一个压测场景,参考 PTS指导文档
-
在施压配置中,打开流量地域配置,按业务需求分配流量比例,右侧可以看到流量分布的饼图:
-
开始压测,在压测概览页,可以查看流量地域分布
总结
压测时,压力流量来源是一个很容易被忽略的因素,要保证压测结果真实可信,就需要按照真实用户的地域分布来准备施压机。阿里云PTS提供了流量地域定制功能,即压即用,支持全球22个Region,9.9¥体验版资源包即可使用。