Vi isso, suas configurações estão chegando nos lugares errados.
N8N_RUNNERS_MAX_CONCURRENCY controla os task runners, a sandbox que executa nós Code. Não tem nada a ver com quantas execuções são executadas ao mesmo tempo.
N8N_CONCURRENCY_PRODUCTION_LIMIT se aplica a uma instância principal em execução no modo regular. No modo fila, a principal apenas enfileira, então não faz nada em nenhum container.
N8N_WORKER_CONCURRENCY está no seu serviço principal em vez do worker, então está no container errado de qualquer forma.
No modo fila, o número que importa é a concorrência do próprio worker, padrão 10, que é exatamente o limite que você está atingindo. Defina-o no comando:
n8n-worker:
command: worker concurrency=30
Recrie o worker depois disso. A taxa de transferência total é concorrência vezes contagem de workers, então dimensione o serviço se um worker não for suficiente.
Depois de reiniciar meu contêiner, verifiquei o log do worker:
n8n Task Broker ready on 0.0.0.0, port 5679
Discovered 4 cluster checks
n8n worker server listening on port 5678
n8n worker is now ready
* Version: 2.30.7
* Concurrency: 10
Até adicionei um novo worker e um novo task runner com a mesma configuração, mas pelos logs a Concorrência do worker é sempre 10.
O limite de execuções continua 10, nenhuma mudança.
Oi @mobabel concurrency é uma flag CLI e precisa dos dois travessões, sem eles Docker a passa como um argumento simples e o worker nunca a reconhece:
command: worker --concurrency=20
A linha de inicialização informa o valor realmente em uso, então você verá Concurrency: 20 lá assim que for ativado. n8n lê esse número da variável N8N_CONCURRENCY_PRODUCTION_LIMIT sempre que ela estiver definida como qualquer coisa diferente de -1 e só volta para a flag quando não estiver, então mantenha essa variável desativada no worker ou defina-a para o mesmo valor.
O comando está faltando os hífens. Você tem worker concurrency=20, mas precisa ser --concurrency=20. Sem eles, o n8n trata como um argumento solto, ignora e volta para o padrão 10, que é exatamente o que seu log está mostrando.
command: worker --concurrency=20
Recrie o container após a alteração, docker compose up -d --force-recreate n8n-worker. O log deve então imprimir Concurrency: 20 na inicialização, essa linha é sua confirmação.
Se preferir defini-lo como variável de ambiente, N8N_CONCURRENCY_PRODUCTION_LIMIT=20 no serviço worker faz a mesma coisa, mas tem que estar no worker, não no principal.