Simultaneidade

Na exibição do Knative, cada revisão é escalonada automaticamente para o número de instâncias de contêiner necessárias para processar todas as solicitações recebidas.

Quando mais instâncias de contêiner estiverem processando solicitações, mais CPU e memória serão usadas, gerando custos maiores. Quando novas instâncias de contêiner precisam ser iniciadas, as solicitações podem levar mais tempo para serem processadas, diminuindo o desempenho do serviço.

Para ter mais controle, a exibição do Knative fornece uma configuração de simultaneidade que especifica o número máximo de solicitações que podem ser processadas simultaneamente por uma determinada instância de contêiner.

Valores de simultaneidade

Por padrão, as instâncias de contêiner de veiculação do Knative podem receber muitas solicitações ao mesmo tempo (até um máximo de 80). Em comparação, as soluções de Funções como serviço (FaaS), como o Cloud Functions, têm uma simultaneidade fixa de 1.

Embora seja necessário usar o valor de simultaneidade padrão, é possível, se necessário, diminuir a simultaneidade máxima. Por exemplo, se o código não puder processar solicitações paralelas, defina a simultaneidade como 1.

O valor de simultaneidade especificado é um máximo, e a disponibilização do Knative pode não enviar tantas solicitações para uma determinada instância de contêiner se a CPU da instância já for muito usada.

O diagrama a seguir mostra como a configuração de simultaneidade afeta o número de instâncias de contêiner necessárias para processar solicitações simultâneas recebidas:

Diagrama de simultaneidade

Quando limitar a simultaneidade a uma solicitação por vez?

É possível limitar a simultaneidade para que apenas uma solicitação por vez seja enviada para cada instância de contêiner em execução. Considere fazer isso nos casos em que:

  • cada solicitação usa a maior parte da CPU ou memória disponível;
  • sua imagem de contêiner não foi projetada para processar várias solicitações ao mesmo tempo, por exemplo, seu contêiner depende do estado global que duas solicitações não podem compartilhar.

Uma simultaneidade de 1 provavelmente terá impacto negativo sobre o desempenho do escalonamento, já que muitas instâncias de contêiner precisarão ser iniciadas para processar um pico nas solicitações de entrada.

Estudo de caso

As métricas a seguir mostram um caso de uso em que 400 clientes estão fazendo três solicitações por segundo para um serviço de exibição do Knative definido como uma simultaneidade máxima de 1. A linha superior verde mostra as solicitações ao longo do tempo, a linha azul inferior mostra o número de instâncias de contêiner iniciadas para lidar com as solicitações.

Simultaneidade definida como 1

As métricas a seguir mostram 400 clientes fazendo três solicitações por segundo para um serviço de exibição Knative, configurado para uma simultaneidade máxima de 80. A linha superior verde mostra as solicitações ao longo do tempo, a linha azul inferior mostra o número de instâncias de contêiner iniciadas para lidar com as solicitações. Muito menos instâncias são necessárias para lidar com o mesmo volume de solicitações.

Simultaneidade definida como 80

A seguir

Para gerenciar a simultaneidade dos serviços de exibição do Knative, consulte Como definir a simultaneidade.

Para otimizar sua configuração de simultaneidade, consulte as dicas de desenvolvimento para ajustar a simultaneidade.