O que é concorrência
Concorrência descreve tarefas cujo processamento permanece em andamento durante períodos sobrepostos. Uma tarefa pode estar esperando a resposta de uma API enquanto outra usa o processador, sem que as duas executem instruções fisicamente no mesmo instante.
O paralelismo acontece quando há execução simultânea, como dois cálculos realizados em núcleos diferentes de CPU. Um sistema pode combinar as duas formas, mas aumentar o número de tarefas em andamento não cria automaticamente mais processadores ou mais capacidade no serviço consultado.
O limite controla quantas tarefas ficam ativas
Um limite de concorrência define quantas tarefas podem ocupar o processamento ao mesmo tempo dentro de determinado escopo. Esse escopo pode ser um worker, um workflow ou o conjunto de execuções de uma aplicação, conforme a ferramenta usada.
Se o limite for aplicado individualmente a cada worker, adicionar outro processo pode aumentar o total de tarefas ativas. Por isso, você precisa distinguir a configuração local de um limite global que valha para todos os processos juntos.
Concorrência não determina a taxa de chamadas
Uma tarefa pode fazer várias chamadas durante sua execução ou passar parte do tempo sem chamar nenhum serviço. Assim, dez workflows ativos não significam necessariamente dez chamadas HTTP simultâneas, e uma única execução pode gerar muitas chamadas em sequência.
Considere duas vagas ocupadas por chamadas que duram um segundo cada. Em um exemplo idealizado sem pausas ou outros custos, essas vagas poderiam atender cerca de cento e vinte chamadas por minuto, muito acima de duas chamadas nesse período.
O rate limit controla uma medida diferente, normalmente a quantidade de chamadas aceita em determinado intervalo. Os dois limites podem precisar trabalhar juntos para que a aplicação use os recursos disponíveis sem ultrapassar a cota do destino.
Esperar uma API é diferente de calcular um arquivo
Tarefas que passam tempo esperando rede podem permitir que o processo avance outros trabalhos durante a espera. Tarefas intensivas em CPU, por sua vez, continuam disputando o tempo de processamento disponível, mesmo quando você aumenta a concorrência configurada.
Memória e conexões também limitam o resultado. Gerar vários arquivos grandes ao mesmo tempo disputa a memória disponível. Consultas simultâneas podem esgotar as conexões abertas para o banco.
Tarefas simultâneas podem alterar o mesmo registro
Duas execuções podem ler o mesmo valor antes de qualquer uma registrar uma atualização. Se ambas calcularem um novo total a partir dessa leitura antiga, uma gravação poderá sobrescrever o efeito da outra, conforme o banco e a aplicação tratam a alteração.
Limitar a concorrência pode reduzir a frequência desse encontro, mas não substitui a proteção correta da atualização. Quando várias tarefas alteram o mesmo objeto, confira as garantias de transação e a forma de gravar o resultado.
Como ajustar e conferir o limite
Compare o tempo de espera, a duração das tarefas e as recusas dos serviços antes e depois de uma alteração pequena na configuração. Se as tarefas ficarem mais lentas, confira o consumo de CPU e memória e a espera por conexões para identificar o recurso que limita o processamento.
Se as falhas aumentarem, leia suas causas antes de atribuir tudo ao volume. Um erro de credencial pode coincidir com o ajuste, enquanto recusas por excesso de chamadas exigem conferir a frequência de acesso ao serviço além do número de tarefas ativas.
Dúvidas frequentes
Perguntas frequentes sobre Concorrência
- Concorrência e paralelismo são iguais?
- Não. Concorrência envolve tarefas em andamento durante períodos sobrepostos. Paralelismo envolve execução simultânea, como trabalho distribuído entre vários núcleos de CPU.
- Duas tarefas simultâneas significam duas chamadas por minuto?
- Não. A concorrência limita o trabalho em andamento. A taxa de chamadas depende da duração e de quantas chamadas cada tarefa realiza ao longo do tempo.
- Um limite por worker vale para todos os workers juntos?
- Não necessariamente. Um limite local pode ser aplicado separadamente a cada processo. Confira se a ferramenta oferece um limite global e qual escopo cada configuração controla.
- Aumentar a concorrência sempre reduz o tempo de processamento?
- Não. O resultado depende dos recursos e das dependências. Mais tarefas ativas podem ampliar a disputa por conexões, memória ou CPU e aumentar recusas do serviço externo.
Para continuar
Recursos relacionados
Documentação
BullMQ: concorrência e paralelismo
Conceitos de concorrência e uso dos recursos durante o processamento.
Abrir recursoDocumentação
BullMQ: concorrência dos workers
Configuração por worker e distribuição entre vários processos.
Abrir recursoAplicação na formação
n8n Experts
A concorrência relaciona o trabalho em andamento à capacidade dos workers e aos limites dos serviços acessados.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.