【问题标题】:How to delete an instance if cpu is low?如果 cpu 低,如何删除实例?
【发布时间】:2018-11-14 11:10:37
【问题描述】:

我正在运行托管实例组,其总体 c.p.u 始终低于 30%,但如果我单独检查实例,我发现有些实例运行在 70 以上,而其他实例运行低至 15%。

【问题讨论】:

  • 您使用的是负载均衡器吗?您是否启用了会话亲和性?您服务的流量类型及其后端要求(简单的 HTML 请求、数据库处理、CPU 密集型操作等。FridayPush 的回答有很好的信息可以帮助您解决这个问题。

标签: automation google-cloud-platform virtual-machine google-compute-engine monitoring


【解决方案1】:

请记住,托管实例组不会将单个实例作为是否应从池中删除计算机的考虑因素。 GCP 的 MIG 保持组中所有实例最近 10 分钟活动的运行平均值,并使用该指标来确定扩展决策。你可以找到更多details here

识别 CPU 使用率低于组的实例在这里似乎不是正确的目标,相反,我建议关注为什么有些机器的使用率是 15%,而另一些机器的使用率是 70%。工作是如何分配到您的实例的,您是否使用正确的策略来平衡您的工作负载?

也许您的应用程序具有导致大量 CPU 使用的特定端点,而其中大多数是基本的 CRUD 操作,让一台机器生成报告并显示更高的使用率是可以的。如果所有实例都从模板呈现 HTML 页面并返回结果,那么一台机器执行的工作比其他机器少得多,这就是分布问题。也许您使用的是RPS algorithm when you want a CPU utilization one

【讨论】:

  • 在我们的 Buissness 模型中,每个 vm 都是单独工作的,因此没有添加负载平衡概念的必要。我只是希望,如果实例组中的 vm 工作低于 15%,那么 statckdriver 应该通过警报或某种我可以用来删除低 cpu 实例的指标。我们想要 80% 以上的 cpu,这对我们来说是可取的。
  • 我不相信 MIG 是您想要的。例如,如果您要手动进入并删除 15% 的使用实例,MIG 将重新创建它以确定需要那么多实例。也许您正在寻找一个非托管实例组,并结合 Jason 对 Stackdriver 警报的建议:cloud.google.com/compute/docs/instance-groups/…
【解决方案2】:

在您的使用案例中,最好的选择是创建一个警报通知,当实例超过所需的 CPU 使用率时,该通知会提醒您。收到通知后,您将能够手动删除 VM 实例。由于它是托管实例组的一部分,虚拟机实例将自动重新创建。

我附上了一篇关于如何创建警报通知here的文章。

Stackdriver 中没有任何指标可以调用 GCE API 来删除虚拟机实例。

【讨论】:

  • 但我不想手动删除它,因为有时我们正在运行 400-500 个实例。
【解决方案3】:

目前没有这样的自动化。不过,自己实现它应该不会太难。您可以编写一个小脚本,该脚本将在您的所有机器(从 Cron 或其他东西开始)上运行,以监控 CPU 使用情况。如果它认为它太低,实例可以从 MIG 中删除自己(您可以使用例如 gcloud compute instance-groups managed delete-instances --instances )。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2016-07-11
    • 2016-12-12
    • 2019-08-08
    • 1970-01-01
    • 2014-01-09
    相关资源
    最近更新 更多