O auto scaling horizontal ajusta automaticamente as réplicas do serviço com base em métricas em tempo real para manter o desempenho e otimizar a utilização de recursos.
Como funciona
O auto scaling horizontal ajusta dinamicamente o número de réplicas com base nos limiares de métricas configurados.
-
Cálculo das réplicas alvo: O sistema calcula a contagem de réplicas alvo (desiredReplicas) usando a razão entre o valor atual da métrica (currentMetricValue) e o valor desejado da métrica (desiredMetricValue), multiplicada pela contagem atual de réplicas (currentReplicas).
Fórmula:
desiredReplicas = ceil[currentReplicas × ( currentMetricValue / desiredMetricValue )]Exemplo: Com 2 réplicas atuais e o QPS Threshold of Individual Instance definido como 10, quando o QPS médio por réplica sobe para 23, as réplicas alvo tornam-se
5 = ceil[2 * (23/10)]. Se o QPS médio cair para 2, as réplicas alvo tornam-se1 = ceil[5 * (2/10)].Se houver múltiplas métricas configuradas, o sistema calcula as réplicas alvo para cada métrica e utiliza o valor máximo como alvo final.
-
Lógica de acionamento: Se as réplicas alvo calculadas excederem as réplicas atuais, o sistema aciona o scale-out. Se as réplicas alvo ficarem abaixo das réplicas atuais, o sistema aciona o scale-in.
ImportantePara evitar operações frequentes de dimensionamento devido a flutuações nas métricas, o sistema aplica uma margem de tolerância de 10% aos limiares. Por exemplo, com um limiar de QPS de 10, o scale-out é acionado apenas quando o QPS excede consistentemente 11 (10 × 1,1). Isso significa:
Flutuações de QPS entre 10 e 11 não acionam o scale-out.
O scale-out ocorre somente quando o QPS permanece estável em 11 ou mais.
Esse mecanismo reduz alterações desnecessárias de recursos e melhora a estabilidade do sistema e a relação custo-benefício.
Execução atrasada: As operações de dimensionamento suportam um mecanismo de atraso para evitar ajustes frequentes causados por breves flutuações de tráfego.
Guia do usuário
Configure políticas de auto scaling horizontal usando o PAI console ou o cliente eascmd.
Ativar ou atualizar o auto scaling
Console
Faça login no PAI console. Selecione uma região na parte superior da página. Em seguida, selecione o workspace desejado e clique em Elastic Algorithm Service (EAS).
Na lista de serviços, clique em nome do serviço alvo para acessar a página de detalhes do serviço.
-
Na aba Auto Scaling, na seção Auto Scaling, clique em Enable Auto Scaling ou Update.


Na caixa de diálogo Auto Scaling Settings, configure os parâmetros.
Descrição dos parâmetros
-
Configuração básica
Parâmetro
Descrição
Recomendações e avisos de risco
Minimum Replicas
Número mínimo de réplicas para operações de scale-in. Valor mínimo: 0.
Ambiente de produção: Para serviços que exigem disponibilidade contínua, defina este valor como
1ou superior.ImportanteDefinir este valor como
0remove todas as réplicas durante períodos de tráfego zero. Novas solicitações enfrentarão todo o atraso de cold start (de dezenas de segundos a vários minutos), tornando o serviço indisponível. Serviços que usam um gateway dedicado não suportam o valor0.Maximum Replicas
Número máximo de réplicas para operações de scale-out. Valor máximo: 1000.
Defina este valor com base no pico de tráfego estimado e na cota de recursos da conta para evitar que picos inesperados de tráfego causem estouro de custos.
General Scaling Metrics
Métricas de desempenho integradas usadas para acionar o dimensionamento.
-
QPS Threshold of Individual Instance: Defina com base nos resultados de testes de estresse, geralmente entre 70% e 80% do desempenho ideal de uma única réplica.
ImportantePara definir o limiar de QPS de réplica única com um valor decimal, use o cliente (eascmd) e configure o campo
qps1k. -
CPU Utilization Threshold: Um valor muito baixo desperdiça recursos; um valor muito alto aumenta a latência das solicitações. Defina com base nas métricas de tempo de resposta (RT).
-
GPU utilization threshold: Configure este valor com base nas métricas de RT.
-
Asynchronous Queue Length: Aplica-se apenas a serviços assíncronos. Defina este valor com base no tempo médio de processamento de tarefas e na latência aceitável. Para obter mais informações, consulte Configurar auto scaling horizontal para serviços de inferência assíncrona.
Custom Scaling Metric
É possível relatar métricas personalizadas e usá-las para auto scaling. Para obter mais informações, consulte Métricas personalizadas de monitoramento e dimensionamento.
Indicado para cenários complexos em que as métricas integradas não atendem aos requisitos de negócios.
-
-
Configuração avançada
Parâmetro
Descrição
Recomendações e avisos de risco
Scale-out Starts in
Janela de observação para decisões de scale-out. Após o acionamento do scale-out, o sistema observa as métricas durante este período. Se os valores das métricas caírem abaixo do limiar, o scale-out será cancelado. Unidade: segundos.
Padrão:
0segundos (scale-out imediato). Aumente este valor (por exemplo, 60 segundos) para evitar dimensionamentos desnecessários causados por picos transitórios de tráfego.Scale-in Starts in
Janela de observação para decisões de scale-in — o parâmetro chave para evitar instabilidade no serviço. O scale-in ocorre somente após as métricas permanecerem abaixo do limiar durante toda esta duração. Unidade: segundos.
Padrão:
300segundos. Isso protege contra eventos frequentes de scale-in decorrentes de flutuações de tráfego. Não defina um valor muito baixo para manter a estabilidade do serviço.Scale-in to 0 Instance Starts in
Quando Minimum Replicas é
0, este parâmetro define o tempo de espera antes que a contagem de réplicas seja reduzida para0.Atrasa o desligamento completo do serviço, fornecendo um tempo de buffer para possível recuperação de tráfego.
Scale-from-Zero Replica Count
Contagem de réplicas a serem adicionadas quando o serviço faz scale-out a partir de
0réplicas.Defina um valor que suporte a explosão inicial de tráfego e reduza a indisponibilidade do serviço durante o cold start.
Client
Antes de executar comandos, certifique-se de ter baixado e autenticado o cliente. Tanto a ativação quanto a atualização utilizam o comando autoscale. Defina a política usando o parâmetro -D ou um arquivo de configuração JSON.
-
Formato do parâmetro:
# Format: eascmd autoscale [region]/[service_name] -D[attr_name]=[attr_value] # Example: Set the minimum number of replicas to 2, the maximum to 5, and the QPS threshold to 10. eascmd autoscale cn-shanghai/test_autoscaler -Dmin=2 -Dmax=5 -Dstrategies.qps=10 # Example: Set the scale-in delay to 100 seconds. eascmd autoscale cn-shanghai/test_autoscaler -Dbehavior.scaleDown.stabilizationWindowSeconds=100 -
Formato do arquivo de configuração:
# Step 1: Create a configuration file (for example, scaler.json). # Step 2: Run the command: eascmd autoscale [region]/[service_name] -s [desc_json] # Example eascmd autoscale cn-shanghai/test_autoscaler -s scaler.json
Exemplo de configuração
O exemplo do scaler.json inclui opções comuns de configuração:
Descrição dos parâmetros
|
Parâmetro |
Descrição |
|
|
Número mínimo de réplicas. |
|
|
Número máximo de réplicas. |
|
|
Métricas e limiares de dimensionamento.
|
|
|
Corresponde ao Atraso de Scale-out no console. |
|
|
Corresponde ao Atraso de Scale-in no console. |
Desativar o auto scaling
Client
-
Formato do comando
eascmd autoscale rm [region]/[service_name] -
Exemplo
eascmd autoscale rm cn-shanghai/test_autoscaler
Melhores práticas
Configuração específica por cenário
Inferência online intensiva em CPU: Configure tanto o CPU Utilization Threshold quanto o QPS Threshold Per Replica. A utilização da CPU reflete o consumo de recursos; o QPS reflete a carga de negócios. Combinar essas métricas permite um dimensionamento preciso.
Inferência online intensiva em GPU: Concentre-se no Limiar de GPU Utilization. Quando as unidades de computação da GPU saturarem, faça scale-out para lidar com mais tarefas simultâneas.
Processamento de tarefas assíncronas: Use o Asynchronous Queue Length como métrica principal. Quando as tarefas acumuladas excederem o limiar, o scale-out aumenta a capacidade de processamento e reduz os tempos de espera.
Práticas de estabilidade
Evite dimensionar para zero: Para serviços de produção síncronos, sempre defina Minimum Replicas como
1ou superior para garantir disponibilidade contínua e baixa latência.Defina atrasos razoáveis: Use o Atraso de Scale-in para evitar instabilidade no serviço devido a flutuações normais de tráfego. O valor padrão de
300segundos atende à maioria dos cenários.
Perguntas frequentes
Por que meu serviço não faz scale-out quando o limiar é atingido?
Os possíveis motivos incluem:
Cota de recursos insuficiente: A cota disponível de vCPU ou GPU em sua conta para a região atual está esgotada.
Atraso de scale-out ativo: Se o Atraso de Scale-out estiver configurado, o sistema aguarda esse período para confirmar o aumento sustentado do tráfego.
Falha na verificação de integridade da réplica: As novas réplicas criadas pelo scale-out falharam nas verificações de integridade, causando falha na operação.
Limite máximo de réplicas atingido: A contagem atual de réplicas atingiu o limite configurado em Maximum Replicas.
Por que meu serviço faz scale-in e scale-out frequentemente?
Isso geralmente resulta de uma configuração inadequada da política de dimensionamento:
Limiar muito sensível: Um limiar definido muito próximo do nível normal de carga faz com que pequenas flutuações acionem eventos de dimensionamento.
Atraso de scale-in muito curto: Períodos de atraso curtos fazem o sistema reagir exageradamente a breves quedas de tráfego, acionando scale-ins desnecessários. Quando o tráfego se recupera, outro scale-out é acionado imediatamente. Aumente o Atraso de Scale-in.
Referências
Para dimensionar réplicas automaticamente em horários agendados, consulte Auto scaling agendado.
Para alocar recursos de forma flexível conforme demandas variáveis, consulte Pools de recursos elásticos.
Para monitorar os efeitos do auto scaling usando métricas personalizadas, consulte Métricas personalizadas de monitoramento e dimensionamento.