How to increase n8n concurrent executions
blackskydigital
PROOP

a year ago

Hi everyone 👋

I'm fairly new to this stuff, so please bear with me - I’m using n8n (self-hosted) on Railway to automate some workflows, but I’ve hit a wall I can’t seem to get past.

The Setup:

  • I’m running n8n in queue mode with:
    • A Primary service
    • 3 Worker services, each set to --concurrency=20
    • A shared Redis and Postgres instance (both working fine)
  • All workers log: * Concurrency: 20, and the main service has EXECUTIONS_MODE=queue set
  • Everything deploys fine - no crashes, no errors

🧠 The Problem:

Despite all that, n8n still only runs 10 executions at a time, no matter how many workflows I trigger. I’ve tried:

  • Setting N8N_CONCURRENCY_PRODUCTION_LIMIT=20 across all services
  • Using n8n worker --concurrency=20 in every worker
  • Confirmed logs show the expected concurrency value
  • Added N8N_DISABLE_PRODUCTION_MAIN_PROCESS=true to offload all work to the workers
  • Triggered test workflows with 30+ requests
  • Duplicated the worker multiple times to scale horizontally

But it’s always stuck at 10 active executions, with the rest queued.

🆘 What I’m Hoping to Learn:

  • Is Railway possibly limiting worker threads or concurrent requests per container?
  • Could this be a resource throttling thing even if CPU/memory look OK?
  • Or am I missing something simple about how n8n behaves in this kind of setup?

Really appreciate any guidance or clarification - I’m not super technical, but I’m learning as I go. Just want to understand what might be going wrong here.

Thanks a ton!

Solved$10 Bounty

4 Replies

sarahkb125
EMPLOYEE

a year ago

Hi there - I think this has to do with the n8n setup, not Railway, so opening up to our community to chime in


Status changed to Awaiting User Response Railway 11 months ago


a year ago

In queue mode each worker honours the flag you pass (--concurrency=20), but only up to N8N_CONCURRENCY (formerly N8N_CONCURRENCY_PRODUCTION_LIMIT) which defaults to 10 if unset. Workers still print “Concurrency: 20”, yet the scheduler silently clips them to 10 active executions.

Here's how to fix it:

  1. Add N8N_CONCURRENCY=20 (or 0 for “no cap”) to every worker’s environment and redeploy.
  2. Keep EXECUTIONS_MODE=queue on the main instance; workers just need n8n worker --concurrency=20.
  3. Monitor CPU: a 1-vCPU Railway container tops out around 15-20 busy executions, so scale vertically or add more workers if jobs still queue.

With that variable set you should see 20 × workers concurrent runs, and any remaining queue length will reflect real CPU limits rather than the default 10-job ceiling. Let me know if it works for you.


blackskydigital
PROOP

a year ago

Hi,

Thanks for that, I tried what you said and it still only ran 10 concurrent executions.

I'm thinking it might be a limitation with Clay.com now as we are sending a HTTP API request from Clay to a webhook in n8n. The only thing I can think of is that they have a cap of 10 concurrent rows, regardless of the n8n settings - I've contacted their support for more details.


blackskydigital

Hi, Thanks for that, I tried what you said and it still only ran 10 concurrent executions. I'm thinking it might be a limitation with [Clay.com](http://Clay.com) now as we are sending a HTTP API request from Clay to a webhook in n8n. The only thing I can think of is that they have a cap of 10 concurrent rows, regardless of the n8n settings - I've contacted their support for more details.

sim
FREE

a year ago

I have found this on Clay's support page https://community.clay.com/x/support/ieacrv6w16s5/whats-the-rate-limit-for-receiving-webhooks?utm%5Fsource=chatgpt.com

"Webhook sources are currently limited to processing up to 10 records per second, with a maximum burst capacity of 20 records. Additionally, each payload sent to the webhook must not exceed 100KB."


Status changed to Solved blackskydigital 11 months ago


Welcome!

Sign in to your Railway account to join the conversation.

Loading...