Je l’ai vu, tes paramètres se retrouvent aux mauvais endroits.
N8N_RUNNERS_MAX_CONCURRENCY contrôle les task runners, le sandbox qui exécute les nœuds Code. Ça n’a rien à voir avec le nombre d’exécutions qui tournent en même temps.
N8N_CONCURRENCY_PRODUCTION_LIMIT s’applique à une instance principale fonctionnant en mode régulier. En mode queue, la principale fait juste l’enqueue, donc ça ne fait rien sur l’un ou l’autre conteneur.
N8N_WORKER_CONCURRENCY se trouve sur ton service principal au lieu du worker, donc il est sur le mauvais conteneur de toute façon.
En mode queue, le chiffre qui compte c’est la concurrence propre du worker, par défaut 10, ce qui est exactement la limite que tu atteins. Définis-le sur la commande :
n8n-worker:
command: worker concurrency=30
Recréé le worker après ça. Le débit total est la concurrence multipliée par le nombre de workers, donc mets à l’échelle le service si un worker ne suffit pas.
Après avoir redémarré mon conteneur, j’ai vérifié le journal du 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
J’ai même ajouté un nouveau worker et un nouveau task runner avec la même configuration, mais selon les journaux la Concurrency du worker est toujours 10.
La limite d’exécutions est toujours 10, aucun changement.
Salut @mobabel concurrency est un drapeau CLI et nécessite les deux tirets, sans eux Docker le passe en tant qu’argument simple et le worker ne le détecte jamais :
command: worker --concurrency=20
La ligne de démarrage indique la valeur réellement utilisée, vous verrez donc Concurrency: 20 une fois qu’elle prendra effet. n8n lit ce nombre à partir de N8N_CONCURRENCY_PRODUCTION_LIMIT chaque fois qu’il est défini sur une valeur autre que -1 et ne se rabat sur le drapeau que s’il n’est pas défini, gardez donc cette variable désactivée sur le worker ou définissez-la sur la même valeur.
Il manque les tirets à la commande. Vous avez worker concurrency=20, il faut --concurrency=20. Sans eux, n8n le traite comme un argument superflu, l’ignore, et revient à la valeur par défaut 10, ce qui est exactement ce que votre journal affiche.
command: worker --concurrency=20
Recréez le conteneur après la modification, docker compose up -d --force-recreate n8n-worker. Le journal devrait alors afficher Concurrency: 20 au démarrage, cette ligne est votre confirmation.
Si vous préférez le définir comme variable d’environnement à la place, N8N_CONCURRENCY_PRODUCTION_LIMIT=20 sur le service worker fait la même chose, mais elle doit être sur le worker, pas sur le principal.