Partilhar via


Dimensionamento automático no Serviço de Aplicativo do Azure

Nota

O dimensionamento automático está disponível para todos os tipos de aplicativos: Windows e Linux (implantados como código e contêiner). O dimensionamento automático não é suportado para o tráfego em slots de implementação.

O dimensionamento automático é uma opção de expansão que lida automaticamente com decisões de dimensionamento para seus aplicativos Web e planos do Serviço de Aplicativo. É diferente do dimensionamento automático do Azure, que permite definir regras de dimensionamento com base em agendas e recursos.

Com o dimensionamento automático, você pode ajustar as configurações de dimensionamento para melhorar o desempenho do seu aplicativo e evitar problemas de inicialização a frio. A plataforma pré-aquece instâncias para atuar como um amortecedor durante a expansão horizontal, garantindo transições de desempenho suaves. Você é cobrado por segundo para cada instância, incluindo instâncias pré-aquecidas.

A tabela a seguir compara as opções de escala horizontal e escala vertical disponíveis no Serviço de Aplicações.

  Manual Escalonamento Automático Dimensionamento automático
Escalões de preços disponíveis Básico e superior Standard e superior Níveis de preços Premium V2 (P1V2, P2V2 e P3V2). Níveis de preços Premium V3 (P0V3, P1V3, P2V3, P3V3, P1MV3, P2MV3, P3MV3, P4MV3 e P5MV3).
Dimensionamento baseado em regras Não Sim Não, a plataforma gerencia o scale-out e o scale-in com base no tráfego HTTP.
Dimensionamento baseado em programação Não Sim Não
Instâncias sempre prontas Não, seu aplicativo Web é executado no número de instâncias dimensionadas manualmente. Não, seu aplicativo Web é executado em outras instâncias disponíveis durante a operação de expansão, com base no limite definido para regras de dimensionamento automático. Sim (mínimo 1)
Instâncias pré-aquecidas Não Não Sim (padrão 1)
Máximo por aplicação Não Não Sim

Como funciona o dimensionamento automático

Você habilita o dimensionamento automático para um plano do Serviço de Aplicativo e configura um intervalo de instâncias para cada um dos aplicativos Web. À medida que seu aplicativo Web começa a receber tráfego HTTP, o Serviço de Aplicativo monitora a carga e adiciona instâncias. Os recursos podem ser compartilhados quando vários aplicativos Web dentro de um plano do Serviço de Aplicativo são necessários para expandir simultaneamente.

Aqui estão alguns cenários em que você deve expandir automaticamente:

  • Você não deseja configurar regras de dimensionamento automático com base em métricas de recursos.
  • Você deseja que seus aplicativos Web dentro do mesmo plano do Serviço de Aplicativo sejam dimensionados de forma diferente e independente uns dos outros.
  • A sua aplicação web está ligada a uma base de dados ou sistema legado, que pode não escalar tão rapidamente quanto a aplicação web. O dimensionamento automático permite que você defina o número máximo de instâncias para as quais seu plano do Serviço de Aplicativo pode ser dimensionado. Essa configuração ajuda o aplicativo Web a não sobrecarregar o back-end.

Ativar dimensionamento automático

A configuração Explosão máxima representa o maior número de instâncias para as quais o seu plano do Serviço de Aplicações pode aumentar com base em solicitações HTTP de entrada. Para planos Premium v2 & v3, você pode especificar até 30 instâncias. O número máximo de explosões deve ser igual ou maior ao número de trabalhadores especificado para o plano de Serviço de Aplicações.

Para ativar o dimensionamento automático, vá para o menu esquerdo do aplicativo Web. Em Configurações, selecione Expansão (plano do Serviço de Aplicativo). Selecione Automático, atualize o valor máximo de intermitência e selecione o botão Salvar .

Captura de ecrã que mostra o dimensionamento automático no portal do Azure

Definir o número mínimo de instâncias do aplicativo Web

A configuração no nível do aplicativo Sempre instâncias prontas especifica o número mínimo de instâncias. Se a carga exceder o número mínimo definido em Instâncias sempre disponíveis, instâncias adicionais serão adicionadas, até ao valor Explosão máxima especificado para o plano do Serviço de Aplicações.

Para definir o número mínimo de instâncias do aplicativo Web, vá para o menu esquerdo do aplicativo Web e selecione Expansão (plano do Serviço de Aplicativo). Atualize o valor das Instâncias Sempre Prontas e selecione o Botão Guardar.

Captura de ecrã de instâncias sempre prontas.

Definir o número máximo de instâncias de aplicativos Web

O valor Limite máximo de escala define o número máximo de instâncias para as quais um aplicativo Web pode ser dimensionado. O limite de escala máxima é útil quando um componente a jusante, como um banco de dados, tem taxa de transferência limitada. O máximo por aplicativo pode estar entre 1 e o valor máximo de intermitência.

Para definir o número máximo de instâncias do aplicativo Web, vá para o menu esquerdo do aplicativo Web e selecione Expansão (plano do Serviço de Aplicativo). Selecione Aplicar limite de escala, atualize o Limite máximo de escala, e selecione o Botão Salvar.

Captura de ecrã do limite máximo de escala.

Atualizar instâncias pré-aquecidas

A configuração de instância pré-aquecida fornece instâncias aquecidas como um buffer durante eventos de ativação e escala HTTP. As instâncias pré-aquecidas continuam a armazenar em buffer até que o limite máximo de expansão seja atingido. A contagem de instâncias pré-aquecidas padrão é 1 e, para a maioria dos cenários, esse valor deve permanecer como 1.

Não é possível alterar a configuração da instância pré-aquecida no portal. Em vez disso, você deve usar a CLI do Azure.

Desativar dimensionamento automático

Para desativar o dimensionamento automático, vá para o menu esquerdo do aplicativo Web e selecione Expansão (plano do Serviço de Aplicativo). Selecione Manual e selecione o botão Salvar .

Captura de ecrã do dimensionamento manual.

Perguntas frequentes

O dimensionamento automático dá suporte a aplicativos do Azure Functions?

Não, você só pode ter aplicativos Web do Serviço de Aplicativo do Azure no plano do Serviço de Aplicativo no qual deseja habilitar o dimensionamento automático. Para aplicativos do Azure Functions, recomendamos que você use o plano Azure Functions Premium .

Atenção

O dimensionamento automático é desabilitado quando os aplicativos Web do Serviço de Aplicativo e os aplicativos do Azure Functions estão no mesmo plano do Serviço de Aplicativo.

Como funciona o dimensionamento automático por trás dos bastidores?

Os aplicativos configurados para serem dimensionados automaticamente são monitorados continuamente, com avaliações de integridade do trabalhador ocorrendo pelo menos uma vez a cada poucos segundos. Se o sistema detetar um aumento de carga na aplicação, as verificações do estado do sistema tornam-se mais frequentes. Se a saúde do trabalhador se deteriorar e as solicitações diminuírem, outras instâncias serão solicitadas. A velocidade com que as instâncias são adicionadas varia com base no padrão de carga e no tempo de inicialização do aplicativo individual. Aplicativos com tempos de inicialização breves e picos intermitentes de carga podem ver uma máquina virtual adicionada a cada poucos segundos a um minuto.

Assim que a carga diminuir, a plataforma inicia uma análise para um possível redimensionamento. Este processo normalmente começa cerca de 5-10 minutos após a carga parar de aumentar. Durante o dimensionamento para dentro, as instâncias são removidas a uma taxa máxima de uma a cada poucos segundos até um minuto.

Se vários aplicativos Web forem implantados dentro do mesmo plano do Serviço de Aplicativo, a plataforma tentará alocar recursos entre as instâncias disponíveis. Essa alocação é baseada na carga de cada aplicativo Web individual.

Como serei faturado por instâncias pré-preparadas?

Para entender como você é cobrado por instâncias pré-aquecidas, considere este cenário: Digamos que seu aplicativo Web tenha cinco instâncias que estão sempre prontas, juntamente com uma instância pré-aquecida definida como padrão.

Quando seu aplicativo Web está ocioso e não recebe nenhuma solicitação HTTP, ele é executado com as cinco instâncias sempre prontas. Durante esse tempo, você não será cobrado por uma instância pré-aquecida porque as instâncias sempre prontas não estão sendo usadas e, portanto, nenhuma instância pré-aquecida é alocada.

No entanto, assim que a sua aplicação web começar a receber solicitações HTTP e as cinco instâncias permanentemente prontas ficarem ativas, uma instância pré-aquecida será alocada. O faturamento começa neste ponto.

Se a taxa de solicitações HTTP continuar aumentando e o Serviço de Aplicativo decidir escalar além das cinco instâncias iniciais, ele começará a utilizar a instância pré-aquecida. Isso significa que, quando há seis instâncias ativas, uma sétima instância é imediatamente disponibilizada para preencher o buffer pré-aquecido.

Esse processo de dimensionamento e pré-aquecimento continua até que a contagem máxima de instâncias para o aplicativo seja atingida. É importante observar que nenhuma instância é pré-aquecida ou ativada além da contagem máxima de instâncias.

Por que tem AppServiceHTTPLogs entradas de log semelhantes a /admin/host/ping com um status 404?

O dimensionamento automático do App Service verifica periodicamente o ponto de extremidade /admin/host/ping, juntamente com outros mecanismos de verificação de integridade que são inerentes à plataforma. Ocasionalmente, devido às configurações de plataforma existentes, esses pings podem retornar erros 404. No entanto, é importante observar que esses erros 404 não devem afetar a disponibilidade ou o desempenho de dimensionamento do seu aplicativo.

Se a sua aplicação web retornar um status 5xx, estes pings do endpoint podem resultar em reinicializações intermitentes, embora esse cenário seja incomum. Certifique-se de que o seu aplicativo web não retorne um estado 5xx nesta extremidade. Esses pontos de extremidade de ping não podem ser personalizados.

Como posso rastrear o número de instâncias escaladas durante o evento de dimensionamento automático?

A métrica AutomaticScalingInstanceCount relata o número de máquinas virtuais em que a aplicação está a ser executada, incluindo a instância pré-aquecida, caso esteja implementada. Essa métrica também pode ser usada para controlar o número máximo de instâncias dimensionadas pelo aplicativo Web durante um evento de dimensionamento automático. Essa métrica está disponível apenas para os aplicativos que têm o Dimensionamento Automático habilitado .

Como o ARR Affinity afeta o dimensionamento automático?

Nota

Ao ativar a Escalabilidade Automática no Plano de Serviços de Aplicações, todas as aplicações pré-existentes no plano terão automaticamente o ARR Affinity desativado.

O Serviço de Aplicações do Azure usa cookies de Roteamento de Pedidos de Aplicações, também conhecidos como Afinidade ARR. Os cookies ARR Affinity restringem o dimensionamento porque enviam solicitações apenas para servidores associados ao cookie, em vez de qualquer instância disponível. Para aplicativos que armazenam o estado, é melhor aumentar a escala (aumentar os recursos em uma única instância). Para aplicações sem estado, a expansão horizontal (adicionando mais instâncias) oferece mais flexibilidade e escalabilidade. Os cookies ARR Affinity são ativados por padrão no Serviço de Aplicativo. No entanto, ao usar escalonamento automático, deve desativar os cookies de afinidade ARR para garantir a escalabilidade adequada.

Para desativar os cookies ARR Affinity: selecione seu aplicativo do Serviço de Aplicativo e, em Configurações, selecione Configuração. Em seguida, selecione a guia Configurações gerais . Em Afinidade de sessão, selecione Desativado e, em seguida, selecione o botão Salvar .

Porque é que o meu plano de Serviços de Aplicações mostra mais instâncias atribuídas do que as definições sempre prontas nas minhas aplicações?

Isto pode acontecer quando as instâncias atribuídas ao plano são maior que o maior número de instâncias sempre disponíveis usado por qualquer aplicação no plano. As instâncias atribuídas representam o número mínimo de instâncias que o plano deve executar. Se este valor for superior aos valores sempre prontos, o plano continua a usar esse mínimo.

Para corrigir esta configuração, atualize a contagem de instâncias permanentemente disponíveis para qualquer aplicação no plano. Tens de mudar o valor. Guardar o mesmo valor não desencadeia o recálculo. Após a atualização, o plano define a contagem de instâncias atribuída para o valor sempre pronto mais alto em todas as aplicações do plano.

Deve completar esta atualização utilizando CLI ou API Azure Resource Manager. O portal Azure não aplica corretamente o recálculo neste momento.

Exemplo: Um plano pode ter 7 instâncias atribuídas. As aplicações do plano podem ter valores sempre disponíveis de 2, 3 e 5. A faturação baseia-se em 7 instâncias porque é o número mínimo necessário. Se alterar o valor "sempre pronto" de qualquer aplicação, por exemplo, de 3 para 4, o plano será recalculado. Depois, define o número de instâncias atribuídas para 5, que é o valor máximo de sempre ativo.