-
为什么要进行链路级的压测,单机、单系统压测为何不可达成目标?
-
线上容量 ≠ 单机容量 * 数量:线上运行环境是复杂多变的,即使配置相同的机器也不能保证性能的完全一致,并且,除机器本身性能外,线上容量还受制于机器间的网络通信、资源争夺、数据库交互、集群管理、缓存效率、负载不均等等多方面的影响,任何一点都有触发性能瓶颈的可能,从而不能单纯的只通过单机 * 数量去评估线上容量。
-
单系统无法体现用户角度的性能:用户请求是链路级的,而链路中各个系统的容量规划往往不对齐的。受不同的用户场景,用户来源,路由策略等影响,流量在链路上的分布情况不是一成不变的,整个链路上的瓶颈点非常不易发现和预测。因此需要进行全链路的多地域多来源的测试,并构建各种流量参数比例的流量场景模拟不同业务场景的用户行为等。
-
-
基于线上环境 or 测试环境进行链路级压测?
-
线上压测更准确:线上环境更加复杂,测试环境无法保证搭建效果与线上一致,任意一个配置的不一致都可能导致容量的差异,而无法体现真实用户使用效果,且搭建可用于链路级压测的测试环境资源需求量巨大,可行性不高。
-
-
对线上环境进行压测的风险如何规避?
方案review+脑暴很重要:规避风险的措施需要在实践过程中反复分析、讨论、解决/规避。
以下以【播放-点播链路】为例阐述压测实践过程。
-
例如防止压测数据污染线上数据,污染缓存,干扰线上指标统计,误触线上的熔断降级,避免没做好准备的外部依赖方被压测打挂等等。
-