我正在运行托管实例组,它们的总体c.p.u始终低于30%,但是如果我逐个检查实例,则发现有些实例的运行率高于70,而另一些实例的运行率低至15%。
答案 0 :(得分:1)
请记住,托管实例组不会将单个实例考虑为是否应将计算机从池中删除。 GCP的MIG会保持组中所有实例最后10分钟活动的运行平均值,并使用该指标来确定扩展决策。您可以找到更多details here。
在这里确定CPU使用率比组低的实例似乎不是正确的目标,相反,我建议重点关注为什么一些计算机使用率达到15%,而其他计算机使用率达到70%。工作如何分配到您的实例,您是否使用正确的策略来为您的工作负载进行负载平衡?
也许您的应用程序具有特定的端点,这些端点会导致大量的CPU使用,而大多数端点是基本的CRUD操作,让一台计算机生成报告并显示更高的使用率就可以了。如果所有实例都从模板渲染HTML页面并返回结果,则一台计算机执行的工作比其他计算机少得多的工作就是分配问题。也许您正在使用RPS algorithm when you want a CPU utilization one。
答案 1 :(得分:0)
在您的用例中,最好的选择是创建一个警报通知,当实例超过所需的CPU使用率时将向您发出警报。收到通知后,您将能够手动删除VM实例。由于它是“托管实例”组的一部分,因此该VM实例将自动重新创建。
我已附上有关如何创建警报通知here的文章。
Stackdriver中没有度量标准,该度量标准将调用GCE API删除VM实例。
答案 2 :(得分:0)
当前没有这种自动化。不过,自己实现它应该不会太困难。您可以编写一个小的脚本,该脚本将在您的所有计算机(从Cron或其他版本开始)上运行,以监视CPU使用情况。如果它确定它太低,则实例可以从MIG中删除自身(您可以使用例如gcloudcompute实例组托管的delete-instances --instances)。