计算CPU负载时使用滑动平均来下降CPU负载抖动带来的不稳定,关于滑动平均见参考资料html
时间窗口机制,用滑动窗口机制来记录以前时间窗口内的QPS和RT(response time)git
知足如下全部条件则拒绝该请求github
当前CPU负载超过预设阈值,或者上次拒绝时间到如今不超过1秒(冷却期)。冷却期是为了避免能让负载刚下来就立刻增长压力致使立马又上去的来回抖动缓存
averageFlying > max(1, QPS*minRT/1e3)
markdown
averageFlying = MovingAverage(flying)并发
在算MovingAverage(flying)的时候,超参beta默认取值为0.9,表示计算前十次的平均flying值框架
取flying值的时候,有三种作法:oop
咱们使用的是第二种,这样能够更好的防止抖动,如图: spa
QPS = maxPass * bucketsPerSecond设计
1e3表示1000毫秒,minRT单位也是毫秒,QPS*minRT/1e3获得的就是平均每一个时间点有多少并发请求
dropreq
关键字若是以为文章不错,欢迎 github 点个 star 🤝