Knative-Serving的缩放机制
单个Pod支持的目标并发数,给定时间内能同时处理的请求数?
缩放的边界?最小实例数, 最大实例数
基于Stable window内获取的指标,结合单个pod的 目标并发数 来计算目标实例数
计算:
比如 上一个周期内平均每个pod的负载为多少
每实例最大并发为100, 平均为40,实例数为2, 这时就会缩容为1个
AutoScaler支持两种扩缩容模式:
- Stable window 稳定窗口期模式 , 灵敏度较低,比如突然收到大量请求的情况
- Panic 恐慌模式, 灵敏度较高的模式, 默认为1/10的 稳定窗口期
窗口期内收到的平均并发数 >= 2 倍的单pod目标并发数(单实例) 就会进入Panic模式
服务抖动
等待时长:
服务时长:从处理开始,到处理结束所花的时间
平均逗留时长:上两者之和
每个pod有自己的bucket
autoscaler 每2秒从pod上抓去一次指标数据,将其存在pod的bucket上。在一个stable window内计算其平均值,然后评估改revision是否需要扩缩容
每2秒计算一次,每2秒抓取一次指标
假设有3个pod,
30个数据相加,a +b +c ... 然后除以30, 得到单个pod,的平均值
把3个pod的平均值相加 a + b +c = z , 然后除以3; z / 3 = avg ; 得到上个窗口期的平均值 =平均每60秒请求数,假设为80