Anomalias de escalonamento automático do grupo de instâncias micro do GCE

1

Eu tenho um grupo de instâncias gerenciado em um projeto no Google Cloud Platform. Meu grupo de instâncias está usando as máquinas predeterminadas mais pequenas que o GCP oferece, o f1-micro (mais informações aqui: link )

Eu tenho o escalonamento automático ativado no meu grupo de instâncias com essas configurações:

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

Eu tenho um comportamento estranho em que, após alguns picos pequenos / curtos no uso da CPU, o autoescalador decide massivamente autoescalonar minhas instâncias, apenas para voltar ao número original alguns minutos depois.

É assim que se parece um cpu-graph do meu grupo de instâncias. Nesta captura de tela, o grupo de instâncias não tinha escalonamento automático e tem três instâncias executando meu aplicativo:

Para mim, essas instâncias não parecem precisar de escalonamento automático, elas parecem estáveis com o poder que têm e, na prática, o site funciona muito bem.

Isso é o que o google diz sobre esse tipo de instância de vm:

f1-micro machine types offer bursting capabilities that allow instances to use additional physical CPU for short periods of time. Bursting happens automatically when your instance requires more physical CPU than originally allocated. During these spikes, your instance will opportunistically take advantage of available physical CPU in bursts

Meu problema é:

  • Esses picos nesse gráfico são normais, considerando que cada instância de vm tem 0,2 CPU compartilhada? Ou esses picos não deveriam estar lá, mesmo que a máquina seja tão pequena?
  • Com o autoescalamento ativado, o autoescalador começa a adicionar instâncias como loucas em cada borda ascendente da atividade da CPU, quando, na realidade, se você calcular a CPU, não houve picos reais no uso da CPU, apenas pequenas explosões que se estabilizaram rapidamente. li>

Minhas opções (eu acho) são:

  • usa menos instâncias, mas de tamanho maior
  • usa algum gráfico do stackdriver que calcula a média da cpu em 10 minutos de média (muito cara)
  • desativar o escalonamento automático e fazer isso manualmente
  • consertar os picos de cpu no meu código (se possível, caso não seja um comportamento normal de micro VMs)
por santiago arizti 24.05.2017 / 00:14

1 resposta

1

Você pode estar se deparando com uma combinação do recurso de estouro da classe f1-micro instance (que pode enviar a utilização da CPU da instância acima de 100%) e como o autoescalador manipula alta carga de CPU .

During periods of heavy CPU utilization, if utilization reaches close to 100%, the autoscaler estimates that the group may already be heavily overloaded. In these cases, the autoscaler increases the number of virtual machines by at least an extra 50% or a minimum of 4 instances, whichever is higher. In general, CPU utilization within a managed instance group will not exceed 100%.

Acho que você descreveu suas opções muito bem. Eu recomendaria verificar se você pode gerenciar sem escalonamento automático.

Se a distribuição de carga do seu aplicativo se correlacionar com o ritmo diurno (sem tráfego durante a noite, carga alta durante o dia), ajuste o tamanho do grupo de instâncias semiautomático (pense em chamar a API do GCE / gcloud do cron).

    
por 03.06.2017 / 18:58