跨境电商项目在各次大促之前,均会进行若干次全链路线上压测,评估线上集群的极限容量。但是由于业务需求多,版本更新迭代快,常常出现业务开发和线上压测准备同时并行的情况。
线上压测由于其特殊性,会对线上服务造成一定的影响,因此一般都设置在凌晨在线人数较少的时间进行。但是由于新上的功能性能隐患较多,容易对线上性能造成影响,可能一轮压测就发现block级别的性能问题,又不能及时发版进行优化,从而阻滞线上压测进度。回看在2017年以来618、双11等典型大促,线上压测进行时都出现过因为明显的block级问题导致浪费宝贵的压测时间的情况。
性能测试组在发现此类问题后,设计了一种“灰度压测”的策略,很大程度上缓解了这个问题。这里就简单的介绍一下设计思路以及具体的实现方式。
在跨境电商的项目中,调用链一般为:client→nginx走域名,nginx→web走nginx的upstream,web→service走dubbo,后端service之间走dubbo。
如图所示,灰度压测主要在域名层、web层和被测服务层做出对应的改动:
在进行大规模线上压测之前,可以在白天的时候进行灰度压测,以便及时发现被测service层的性能,从而提升线上压测的效率,节约宝贵的线上压测时间。
综上,使用灰度压测有如下优点:
但是灰度压测也有一定的局限性,在设计压测方案的过程中有不少的注意事项:
本文来自网易实践者社区,经作者崔慎杰授权发布。