预估扩容所需的容器资源的常见方法

背景

我们在很多情况下需要扩充容器来应对访问量的增加,最理想的情况下,我们是通过压测的方式来确定单台容器的最大qps,然后通过新增多少qps来估算需要新增多少台容器的,但是有很多时候,我们都能难通过这么理想的方式扩容,一般情况下都是老板新增了一些业务,让我们大概评估需要新增多少容器来支持业务,它不需要很准确的数值,那么这种情况下我们怎么做呢?

怎样扩容才更合理:

这种情况下,我们一般会估算出来当前业务新增的访问量大概会是已有的业务的访问量的多少倍,基于已有业务使用的最大秒级cpu和分钟级cpu来分别预估需要扩容的容器数量,假设现在我们目前有100台容器,每台容器假设最大cpu上限可以达到80%,目前业务已经使用的秒级cpu最大值为60%,分钟级cpu平均最大值为40%,新增的业务的访问量会是当前已有业务访问量的0.5倍

1.基于秒级cpu最大值60%来预估

当前100台容器如果使用到最大的80%的cpu时,实际只需要的容器数为100 * 60/80 = 75台,完全空闲的容器数有100 * 20/80 = 25台, 那么新增的业务需要的容器数为:75台 * 0.5 = 38台, 由于目前有25台处于空闲状态,所以实际需要的容器数为 38台 - 25台 = 13台

2.基于分钟级cpu平均最大值40%来预估

当前100台容器如果使用到最大的80%的cpu时,实际只需要的容器数为100 * 40/80 = 50台,完全空闲的容器数有100 * 40/80 = 50台, 那么新增的业务需要的容器数为:50台 * 0.5 = 25台, 由于目前有50台处于空闲状态,所以根本不需要扩容,甚至还可以缩容25台容器

当我们基于以上的预估得到这两种情况下的容器扩容的数值后,我们可以让运维最多准备好13台容器,但是可以通过慢慢灰度新增业务的方式决定是否要实际增加这些容器,甚至可以设置根据cpu的占用自动扩容,这样就可以在节省资源和应对突发情况时都可以较好的应对

你可能感兴趣的:(java性能,java)