作者回复: 可以认为是每个服务单独训练一个模型,训练的数据是不一样的(每个服务有自己的训练数据),但是训练的流程都是一样的(同一套神经网络算法代码)。 当然,最后总有少数几个服务的结果不那么准确(Badcase),这时候就要单独看待了,如果服务很特殊,又必须预测容量,那么也许针对这个服务需要引入更特别的模型。
作者回复: 1.是整个服务集群的CPU 2.集群扩容后就不适用了,因为服务的容量表现改变了,需要重新训练
作者回复: 例如,某大促活动预计服务QPS将到达1000,我们通过模型预测出CPU利用率将达到105%,显然是有风险的,此时我们就可以提前进行扩容或进行服务优化
作者回复: 你好,能够预测未来多长时间的容量情况,取决于我们针对未来何时的业务场景建立模型。容量预测的模型与业务场景有关,与时间无关。 对于第二个问题,你的理解是对的,具体方法可以回顾第01篇中“容量保障目标的量化”这部分的“QPS/TPS”小节,如何将业务目标转化为容量保障的技术目标。
作者回复: 好问题,下篇有解答你的疑问
作者回复: 原理上,两者都能处理“回归问题”,神经网络的重点是建立自变量和因变量之间的关系,而回归分析更关注这一关系的内部结构。就容量预测的问题来说,两者没有本质的区别(我们并不需要去解释这一关系的结构)。
作者回复: 很高兴看到有深度的回复,咱们互相学习。 对于第一个问题,在容量测试下篇中的“容量预测迭代与校准”和“警惕业务场景变化”这两部分恰好谈到了相应的解决方案(当然,没有银弹),可以看看是不是有启发。 对于第二个问题,我在这里细讲一下,假定你所指的维度=特征数量。在我们的实践中,输入特征的维度不高,甚至我们还额外做了一些降维的工作(将各依赖服务的TPS合并为一个特征),原因是特征过多的情况下,模型很难收敛,调优也很困难。但是维度过低也容易出现过拟合的情况,我们的做法是将所有特征通过类似feature importance的方式去打分,从而获得对结果贡献最大的某组特征的组合,再基于这个特征组合去进一步识别是否过拟合(识别过拟合比较偷懒,直接可视化以后人肉识别),以及是不是要降维,反复调优逼近最佳结果。
作者回复: 我们当时并没有将研究的重点放在时序预测模型上,主要是考虑到神经网络的通用性更强,所以我们觉得这条路一定是走得通的(事实证明确实走通了)。不过辩证地说,也许类似AMIRA或ARIMAX这样的时序预测模型会得到更好的效果,如果你有成功的实践案例,非常愿意学习!