Sites

Dimensionamento e Auto-dimensionamento de uma Aplicação Node.js

Auto-scaling grows and shrinks the number of instances running your Node.js app as CPU load changes, so busy periods get more capacity and quiet periods cost less. This guide covers the KPanel tab…

Escalabilidade e Auto-escalabilidade de uma Aplicação Node.js

A auto-escalabilidade aumenta e reduz o número de instâncias executando sua aplicação Node.js conforme a carga de CPU muda, de modo que períodos ocupados obtêm mais capacidade e períodos tranquilos custam menos. Este guia abrange a aba KPanel, cada configuração, o que é cobrado e como tornar uma aplicação segura para escalar.

Onde a Escalabilidade Fica no KPanel

  1. Inicie sessão em KPanel.
  2. Clique em Websites na barra lateral esquerda e, em seguida, clique no site.
  3. Na barra de abas do site, abra Advanced e depois Scaling.

O endereço direto é /websites/<site-id>/autoscale. O endereço /websites/<site-id>/scaling mais antigo ainda funciona e o leva ao mesmo lugar.

Configurações de auto-escalabilidade para uma aplicação Node.js no KPanel

A aba aparece apenas em sites Node.js. Ela não estará no menu para um site WordPress, WooCommerce, estático, PHP, Python ou Ruby, porque o mecanismo escala um cluster de processos Node.js.

Uma Aba, Uma Configuração

KPanel costumava ter duas abas aqui, Scaling e Autoscale, sobre um conjunto de configurações. Eram duas visualizações da mesma configuração, que era apenas uma forma de se perder, portanto agora são uma única aba Scaling: status ao vivo, as configurações, eventos de escalabilidade recentes e o painel de uso e custo do período de cobrança atual, tudo em um só lugar.

Como Funciona

Sua aplicação é executada como um cluster de processos. A auto-escalabilidade monitora a CPU média entre as instâncias em execução e adiciona ou remove instâncias de acordo com os limites que você define.

O modo de cluster é necessário. Se sua aplicação ainda não estiver em modo de cluster, ativar a auto-escalabilidade a muda para você, o que envolve uma breve reinicialização. A página o informa quando isso acontece.

Lendo o Status ao Vivo

O cartão de status mostra três coisas:

  • Instances: quantas estão em execução agora.
  • Avg CPU: a CPU média entre essas instâncias.
  • Cluster: se a aplicação está em modo de cluster. Se disser não, ativar a auto-escalabilidade a mudará.

Se a aplicação não estiver em execução, o cartão indica isso em vez de mostrar zeros.

A aba também mostra Last scale, a hora do evento de escalabilidade mais recente, ou never.

As Configurações

ConfiguraçãoIntervaloO que faz
Min instances1 a 16O piso. Nunca escala abaixo disso
Max instances1 a 16O teto. Nunca escala acima disso
Scale up at CPU %5 a 99CPU média acima disso adiciona uma instância
Scale down at CPU %1 a 95CPU média abaixo disso remove uma
Cooldown (sec)30 a 3600Espera mínima entre ações de escalabilidade

O interruptor principal é o alternador no cabeçalho do cartão de configurações. Quando a auto-escalabilidade está desativada, as configurações ficam acinzentadas e sua aplicação permanece na contagem de instâncias atual.

Valores iniciais sensatos:

  • Min instances 1 ou 2. Dois se você não puder tolerar uma reinicialização de uma única instância deixando a aplicação offline.
  • Max instances no que você está disposto a pagar no pico, não no teto.
  • Scale up em torno de 70 por cento. Alto o suficiente para que você não esteja pagando por espaço que nunca usa, baixo o suficiente para que haja tempo de adicionar capacidade antes que as solicitações comecem a ficar na fila.
  • Scale down em torno de 30 por cento. Deixe um grande intervalo entre os dois limites.
  • Cooldown de alguns minutos. Esta é a configuração mais subestimada.

Definir os dois limites de CPU muito próximos causa instabilidade: o cluster escala para cima, imediatamente cai abaixo do limite de escala para baixo porque a carga agora está distribuída mais amplamente, escala para baixo, volta a subir e se repete. Mantenha um intervalo grande e use um cooldown generoso. A instabilidade custa dinheiro e desestabiliza a aplicação.

Eventos de Escalabilidade

A aba lista eventos de escalabilidade recentes, mais recentes primeiro, cada um mostrando a direção, a contagem de instâncias antes e depois, a leitura de CPU que o acionou e a hora.

Este é o log que deve ser lido quando a aplicação se comportou mal. Uma rajada de eventos para cima e para baixo em alguns minutos significa que seus limites estão muito próximos ou seu cooldown muito curto. Um único aumento de escalabilidade que nunca voltou significa que a carga permaneceu alta, o que é uma questão de capacidade em vez de configuração. Nenhum evento em absoluto quando você esperava alguns significa que a CPU nunca cruzou um limite ou a auto-escalabilidade está desativada.

O que a Auto-Escalabilidade Custa

Instâncias acima da alocação base do seu plano são medidas e cobradas por segundo. A aba mostra, para o período atual:

  • Instance-time used, em horas e minutos, com os segundos-instância brutos por baixo.
  • Spent so far neste período.
  • Projected month-end, extrapolado do uso até agora.
  • Tracking, quantas janelas de uso foram cobradas do total registrado.
  • Period progress, dias decorridos de dias no mês.

A taxa por segundo é mostrada no topo do mesmo painel, de modo que a figura pela qual você é cobrado é sempre visível próximo ao uso ao qual ela se aplica.

A projeção é o número a ser observado. Ela extrapola do que você usou até agora, portanto uma semana inusitadamente ocupada no início do mês a superestimará. Verifique alguns dias depois e novamente no meio do mês antes de tirar conclusões. Se for mais alto do que você gostaria, reduza a contagem máxima de instâncias em vez de aumentar o limite de escalabilidade: o teto é um limite rígido, um limite é apenas uma dica.

Escalar para baixo até o mínimo para a medição. Se você desativar a auto-escalabilidade completamente, a aplicação fica na contagem de instâncias que tem atualmente, portanto reduza-a para o mínimo primeiro se o custo é o motivo pelo qual você está desativando.

Tornando uma Aplicação Segura para Escalar

A página traz um aviso, e é a coisa mais importante nela: sua aplicação Node.js deve ser segura para cluster para escalar bem entre instâncias.

Na prática, isso significa:

Sem estado de sessão na memória. Se a sessão de um usuário conectado vive na memória de uma instância, ele é desconectado sempre que uma solicitação chega a uma instância diferente. Mova sessões para um armazenamento compartilhado.

Sem cache na memória em que você confia para correção. Cada instância tem o seu próprio. Um cache que deve ser consistente tem que ser compartilhado.

Sem gravações no sistema de arquivos local que você espera ler de volta. Uploads gravados em disco local por uma instância são invisíveis para as outras. Escreva no armazenamento compartilhado.

Sem trabalho agendado desprotegido. Se um temporizador é executado dentro da aplicação, cada instância o executa, portanto um trabalho noturno em quatro instâncias é executado quatro vezes. Mova o trabalho agendado para um trabalho cron ou proteja-o com um bloqueio. Consulte Cron Jobs.

Sem suposição de que a contagem de instâncias é estável. Qualquer coisa que particiona o trabalho por índice de instância quebra no momento em que a contagem muda.

Se qualquer um deles se aplicar à sua aplicação, corrija-os antes de ativar a auto-escalabilidade. Uma aplicação que não é segura para cluster falha de formas intermitentes e difíceis de reproduzir, porque dependem de qual instância serviu qual solicitação.

Solução de Problemas

O alternador não será ativado. Ativar precisa da permissão de escrita do site. Com uma função somente leitura os controles estão desabilitados.

A aplicação foi reiniciada quando ativei a auto-escalabilidade. Esperado. Mudar para o modo de cluster requer uma reinicialização, e isso acontece uma vez.

Os usuários estão sendo desconectados aleatoriamente. Sintoma clássico de não seguro para cluster. As sessões estão na memória e as solicitações estão chegando a instâncias diferentes.

As instâncias escalaram para cima e nunca voltaram. Ou a carga permaneceu acima do limite de escala para baixo, ou algo está mantendo a CPU alta independentemente do tráfego. Verifique a lista de eventos e veja o que a aplicação está realmente fazendo.

Um trabalho agendado foi executado várias vezes. Cada instância o executou. Mova-o para um trabalho cron ou adicione um bloqueio.

Nada escala. Confirme se o alternador está ativado, a aplicação está em execução e o modo de cluster está ativado. Em seguida, verifique se a CPU realmente cruzou seu limite de escalabilidade para cima na lista de eventos.

O custo é mais alto do que o esperado. Procure instabilidade na lista de eventos e depois reduza sua contagem máxima de instâncias.

Páginas Relacionadas

Ainda precisa de ajuda?

Envie-nos um email para support@kapsulehost.com ou abra um chat no KPanel.

Abrir KPanel