Understanding Queue Mode
Queue mode transforms n8n from a single-process application into a distributed system where workflow executions are processed by dedicated worker processes.Architecture Components
Main Process
- Serves web UI and API
- Manages workflow definitions
- Handles user authentication
- Enqueues executions to Redis
- Does NOT execute workflows
Worker Processes
- Pull execution jobs from Redis queue
- Execute workflow nodes
- Save results to database
- Can be scaled independently
- Run on separate servers/containers
Redis (Message Broker)
- Manages job queue (Bull)
- Coordinates between main and workers
- Handles job priorities and retries
- Stores temporary execution state
PostgreSQL (Database)
- Stores workflow definitions
- Stores execution results
- Manages credentials (encrypted)
- Shared by all components
- Required for queue mode
Execution Flow
Prerequisites
Basic Queue Mode Setup
Docker Compose Configuration
Starting in Queue Mode
Worker Configuration
Concurrency Settings
Maximum concurrent executions per worker.
-1 means unlimited.Recommendation: Start with 5-10 per worker, adjust based on:
- Available CPU cores (1-2 executions per core)
- Memory per worker (500MB-1GB per execution)
- Execution complexity and duration
Worker Resources
- Light Workloads
- Medium Workloads
- Heavy Workloads
Simple workflows with minimal data processing.
Worker Lock Settings
How long (ms) a worker holds a job lease.
How often (ms) to renew the job lease.
How often (ms) to check for stalled jobs.
Advanced Scaling
Queue Mode with Task Runners
Combine queue mode with external task runners for maximum isolation:Multi-Main Setup (Enterprise)
Run multiple main processes for high availability:Redis Configuration
Redis Cluster
For high availability Redis:Redis with TLS
Redis Performance Tuning
Connection Settings
Connection Settings
Memory Management
Memory Management
Monitoring and Observability
Prometheus Metrics
Enable metrics on all processes:Queue metrics are not supported in multi-main setup.
Key Metrics to Monitor
Queue Metrics
Queue Metrics
n8n_queue_jobs_waiting- Jobs waiting to be processedn8n_queue_jobs_active- Currently executing jobsn8n_queue_jobs_completed- Successfully completed jobsn8n_queue_jobs_failed- Failed jobsn8n_queue_jobs_delayed- Scheduled for future execution
Worker Metrics
Worker Metrics
process_cpu_user_seconds_total- CPU usageprocess_resident_memory_bytes- Memory usagen8n_workflow_executions_total- Execution countn8n_workflow_execution_duration_seconds- Execution duration
Database Metrics
Database Metrics
- Connection pool utilization
- Query execution time
- Active connections
Health Checks
Enable worker health endpoints:Scaling Strategies
When to Scale
Measure Execution Latency
Track time from trigger to execution start.Action: If latency > 5 seconds, scale workers.
Horizontal Scaling Formula
Vertical vs Horizontal Scaling
- Horizontal Scaling (Recommended)
- Vertical Scaling
Add more workers✅ Pros:
- Better fault tolerance
- Easier to scale incrementally
- Can distribute across servers
- No single point of failure
- More complex infrastructure
- Requires load balancing (multi-main)
- Higher operational overhead
Performance Optimization
Database Optimization
Connection Pooling
Connection Pooling
Execution Data Pruning
Execution Data Pruning
PostgreSQL Settings
PostgreSQL Settings
Execution Optimization
Timeout Configuration
Timeout Configuration
Memory Limits
Memory Limits
Troubleshooting
Jobs stuck in queue
Jobs stuck in queue
Symptoms: Jobs waiting but workers idleCauses:
- Workers can’t connect to Redis
- Different encryption keys
- Workers crashed
High Redis memory usage
High Redis memory usage
Symptoms: Redis running out of memoryCauses:
- Too many failed jobs accumulating
- Large payloads in jobs
- No eviction policy
Workers not scaling
Workers not scaling
Symptoms: Adding workers doesn’t increase throughputCauses:
- Database bottleneck
- Redis bottleneck
- Network limitations
- CPU constraints
- Monitor database query times
- Check Redis CPU usage
- Profile slow workflows
- Increase database connections
- Consider database read replicas
Best Practices
Start Small
Begin with 2-3 workers and scale based on metrics, not guesses.
Monitor Everything
Track queue depth, worker CPU/memory, database performance, and execution latency.
Use Health Checks
Enable health checks on all components for automatic recovery.
Plan for Failures
Design workflows to be idempotent and handle retries gracefully.
Prune Execution Data
Regularly clean old execution data to maintain database performance.
Secure Redis
Always use authentication and TLS for Redis in production.
Next Steps
Configuration Reference
Complete list of environment variables
Docker Deployment
Docker Compose examples
Self-Hosting Overview
Understanding deployment options