Compartilhar via


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

Observação

O dimensionamento automático está disponível para todos os tipos de aplicativo: Windows e Linux (implantação como código e contêiner). Não há suporte para o dimensionamento automático para o tráfego de slot de implantaçã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 agendamentos e recursos.

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

A tabela a seguir compara as opções de expansão e expansão disponíveis no Serviço de Aplicativo:

  Manual Autoescala Dimensionamento automático
Tipos de preço disponíveis Básico e superior Padrão e superior Tipos de preço Premium V2 (P1V2, P2V2 e P3V2). Premium V3 (P0V3, P1V3, P2V3, P3V3, P1MV3, P2MV3, P3MV3, P4MV3 e P5MV3).
Dimensionamento baseado em regras Não Sim Não, a plataforma gerencia a expansão e a redução com base no tráfego HTTP.
Escalonamento baseado em agendamento Não Sim Não
Instâncias sempre prontas Não, seu aplicativo Web é executado no número de instâncias escaladas 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 de 1)
Instâncias pré-aquecidas Não Não Sim (padrão de 1)
Máximo por aplicativo Não Não Sim

Como o dimensionamento automático funciona

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 escalar horizontalmente simultaneamente.

Veja alguns cenários em que você deve escalar horizontalmente 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 um do outro.
  • Seu aplicativo web está conectado a um banco de dados ou sistema herdado, que pode não escalar tão rápido quanto o aplicativo web. O dimensionamento permite definir automaticamente o número máximo de instâncias para as quais o plano do Serviço de Aplicativo pode ser dimensionado. Essa configuração ajuda o aplicativo Web a não sobrecarregar o back-end.

Habilitar o dimensionamento automático

A configuração de intermitência máxima representa o número mais alto de instâncias para as quais seu plano do Serviço de Aplicativo pode aumentar com base nas solicitações HTTP de entrada. Para planos Premium v2 e v3, você pode especificar até 30 instâncias. O número máximo de intermitência deve ser igual ou maior que o número de trabalhos especificado para o plano do Serviço de Aplicativo.

Para ativar o dimensionamento automático, vá para o menu à esquerda do aplicativo da web. Em Configurações, selecione Expansão (plano do Serviço de Aplicativo). Selecione Automático, atualize o valor de Intermitência máxima e selecione o botão Salvar.

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

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

A configuração no nível do aplicativo Sempre pronto especifica o número mínimo de instâncias. Se a carga exceder o número mínimo definido em instâncias sempre prontas, instâncias adicionais serão adicionadas, até o valor máximo de intermitência especificado para o plano do Serviço de Aplicativo.

Para definir o número mínimo de instâncias do aplicativo Web, acesse o menu à esquerda do aplicativo Web e selecione Escalar horizontalmente (plano do Serviço de Aplicativo). Atualize o valor Instâncias sempre prontas e selecione o botão Salvar.

Captura de tela de instâncias sempre prontas.

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

O valor máximo do limite de escala define o número máximo de instâncias para as quais um aplicativo Web pode dimensionar. O limite máximo de escala é útil quando um componente downstream 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, acesse o menu à esquerda do aplicativo Web e selecione Escalar horizontalmente (plano do Serviço de Aplicativo). Selecione Impor limite de expansão, atualize o Limite máximo de escala e selecione o botão Salvar.

Captura de tela 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 a escala HTTP e eventos de ativação. As instâncias pré-aquecidas continuam no 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é-armada no portal. Em vez disso, você deve usar a CLI do Azure.

Desabilitar o dimensionamento automático

Para desabilitar o dimensionamento automático, acesse o menu à esquerda do aplicativo Web e selecione Escalar horizontalmente (plano do Serviço de Aplicativo). Selecione Manual e selecione o botão Salvar .

Captura de tela 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 Premium do Azure Functions .

Cuidado

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

Como o dimensionamento automático funciona nos bastidores?

Os aplicativos definidos para serem dimensionados automaticamente são monitorados continuamente, com avaliações de integridade do trabalho ocorrendo pelo menos uma vez a cada poucos segundos. Se o sistema detectar um aumento na carga do aplicativo, as verificações de saúde se tornarão mais frequentes. Se a integridade do trabalho se deteriorar e as solicitações forem mais lentas, outras instâncias serão solicitadas. A velocidade com que as instâncias são adicionadas varia de acordo com o padrão de carga e o tempo de inicialização do aplicativo individual. Aplicativos com breves tempos de inicialização e intermitências intermitentes de carga podem ver uma máquina virtual adicionada a cada poucos segundos a um minuto.

Depois que a carga diminuir, a plataforma iniciará uma revisão para possíveis dimensionamentos. Esse processo normalmente começa cerca de 5 a 10 minutos depois que a carga para de aumentar. Durante o dimensionamento, as instâncias são removidas a uma taxa máxima de uma a cada poucos segundos a um minuto.

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

Como fazer para ser cobrado por instâncias pré-inicializadas?

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

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

No entanto, assim que seu aplicativo Web começar a receber solicitações HTTP e as cinco instâncias sempre prontas se tornarem ativas, uma instância pré-armada será alocada. A cobrança por ela começa neste momento.

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

Este processo de dimensionamento e pré-inicialização continua até que a contagem máxima de instâncias para o aplicativo seja atingida. É importante observar que nenhuma instância está pré-inicializada ou ativada além da contagem máxima de instâncias.

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

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

Se seu aplicativo web retornar um status 5xx, esses pings dos endpoints podem causar reinicializações intermitentes, embora este cenário seja incomum. Verifique se seu aplicativo web não retorna um status 5xx neste endpoint. Esses pontos de extremidade de ping não podem ser personalizados.

Como fazer para acompanhar o número de instâncias de expansão durante o evento de dimensionamento automático?

A métrica AutomaticScalingInstanceCount relata o número de máquinas virtuais nas quais o aplicativo está em execução, incluindo a instância pré-aquecida, se ela for implantada. Essa métrica também pode ser usada para acompanhar o número máximo de instâncias que seu aplicativo Web escalonou 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 a Afinidade ARR afeta o dimensionamento automático?

O Serviço de Aplicativo do Azure utiliza cookies de Roteamento de Solicitações de Aplicativos, conhecidos como ARR Affinity. Os cookies de afinidade ARR 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 escalar verticalmente (aumentar os recursos em uma única instância). Para aplicativos sem estado, o dimensionamento (adição de mais instâncias) oferece mais flexibilidade e escalabilidade. Os cookies de afinidade ARR são habilitados por padrão no Serviço de Aplicativo. Dependendo das necessidades do aplicativo, você pode optar por desabilitar cookies de afinidade ARR ao usar o dimensionamento automático.

Para desabilitar os cookies de Afinidade ARR, selecione seu Aplicativo de Serviço 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 .