GCE微实例组自动缩放exception

我在Google云端平台的一个项目中有一个托pipe的实例组。 我的实例组使用GCP提供的最小的预定义机器,f1-micro(更多信息,请访问https://cloud.google.com/compute/docs/machine-types#sharedcore )

我的实例组使用以下设置启用了自动缩放

gcloud compute instance-groups managed set-autoscaling [my-ig] \ --region us-central1 \ --min-num-replicas=3 \ --max-num-replicas=15 \ --cool-down-period=250 \ --scale-based-on-cpu \ --target-cpu-utilization=0.9 

我有一些奇怪的行为,在cpu使用中出现一些小的/短的峰值之后,autoscaler决定大规模地自动调整我的实例,然后在几分钟后回到原来的数字。

这是我的实例组的cpu-graph的样子,在这个屏幕截图中,实例组没有自动缩放,它有3个实例运行我的应用程序:

在这里输入图像说明

对我来说,这些情况看起来并不像他们需要自动调整,他们似乎是稳定的,实际上,网站的performance非常好。

这是谷歌关于这种虚拟机实例的说法:

f1-micro机器types提供突发function,允许实例在短时间内使用额外的物理CPU。 当您的实例需要比最初分配的更多物理CPU时,会自动发生爆炸。 在这些峰值期间,您的实例将以机会性的方式利用突发中的可用物理CPU

我的问题是:

  • 那个图中的尖峰是正常的,因为每个vm实例有0.2个共享cpus? 或者即使机器非常小,那些尖刺也不应该存在
  • 随着自动缩放,自动调整程序开始在cpu活动的每个上升沿添加疯狂的实例,实际上,如果您对cpu进行平均,那么cpu使用率并没有真正的高峰,只有很小的突发迅速稳定下来。

我的select(我认为)是:

  • 使用更less的实例,但更大的大小
  • 使用平均10分钟平均CPU的一些stackdriver图 (太贵了)
  • 禁用自动缩放并手动执行
  • 修复我的代码中的CPU峰值(如果可能的话,万一它不是微型虚拟机的正常行为)

您可能正在运行f1-micro实例类(可以将实例CPU利用率超过100%)的突发function以及Autoscaler如何处理高CPU负载 。

在CPU利用率较高的时段,如果利用率接近100%,则自动调节器估计该组可能已经大量过载。 在这些情况下,自动调节程序会将虚拟机的数量增加至less50%或最less4个实例,以较高者为准。 通常,被pipe实例组内的CPU利用率不会超过100%。

我想你已经很好地概述了你的select。 我会build议检查,如果你可以pipe理没有自动缩放。

如果您的应用程序负载分布与昼夜节律相关(夜间无stream量,白天高负载),则可以半自动调整实例组大小(可以从cron调用GCE API / gcloud)。