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 • about 1 year 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 • about 1 year ago


Welcome!

Sign in to your Railway account to join the conversation.

Loading...