Learn how to set concurrency limits in n8n with clear steps to optimize workflows, boost performance, and prevent task overload.

Book a call with an Expert
Starting a new venture? Need to upgrade your web app? RapidDev builds application with your growth in mind.
The short, direct answer is: n8n doesn’t let you set per‑workflow concurrency limits inside the workflow itself, but you can control concurrency using three real, production‑safe mechanisms: global execution limits, queue mode + concurrency settings in Redis workers, and Webhook/Trigger rate limiting at the infrastructure level. In real projects, proper concurrency control usually means running n8n in queue mode and tuning concurrency per worker.
n8n runs workflows as “executions”. When multiple workflows get triggered at the same time (for example via webhook triggers, schedules, or incoming events), n8n may run several executions in parallel. How many can run at once depends on how your environment is configured.
There is no “per workflow concurrency” setting inside the UI, so the way we control concurrency is at the platform level (n8n server settings) or by shaping traffic before it reaches n8n.
1. Global execution limits (simple setups)
export N8N_CONCURRENCY_PRODUCTION_LIMIT=5 // allow max 5 executions at the same time
Useful on small servers where you want to make sure a spike of incoming triggers doesn’t overload the instance. It applies globally — all workflows share this limit.
2. Queue mode + worker concurrency (the real production solution)
export N8N_EXECUTIONS_MODE=queue
export QUEUE_WORKER_CONCURRENCY=3 // each worker runs max 3 executions at once
This is the most flexible and scalable way to manage concurrency in production deployments.
3. Rate limiting before the workflow reaches n8n (infrastructure-level)
# Example NGINX rate limit
limit_req_zone $binary_remote_addr zone=slowzone:10m rate=5r/s;
location /webhook/ {
limit_req zone=slowzone;
proxy_pass http://n8n:5678;
}
This protects n8n from traffic spikes and prevents workflow execution pileups.
n8n workflows are stateless execution graphs. Each run is independent. There is no built‑in mechanism that says “only allow 1 execution of this workflow at a time”. The engine doesn’t track a “lock” per workflow.
To mimic per-workflow concurrency, you use either:
Both are reliable and proven in production environments.
This pattern gives predictable load, prevents timeouts, and avoids broken API quotas.
Bottom line: you set concurrency limits in n8n by configuring global execution limits, or the worker concurrency when running in queue mode, or rate limiting traffic before it reaches n8n. n8n does not provide a per‑workflow concurrency setting inside the workflow itself.
When it comes to serving you, we sweat the little things. That’s why our work makes a big impact.