ERPNextCalc: Frappe v15 Gunicorn, Redis RQ & InnoDB Studio
ERPNextCalc calculates deterministic Gunicorn worker counts via (2 * vCPU) + 1, isolates Redis RQ short/default/long queues, and pins MariaDB innodb_buffer_pool_size to 45% RAM on co-located servers.
Use the horizontal parameter ribbon below to update real-time memory meters, generate common_site_config.json, and export Supervisor worker specs without per-user SaaS lock-in.
Our sizing formula rejects the 75% InnoDB rule on single-node Frappe benches.
In our audit of production Frappe v15 / ERPNext deployments, each Gunicorn worker with --preload enabled holds ~260 MB of Python bytecode and doctype metadata. On an 8 vCPU / 16 GB server, 17 Gunicorn processes require 4,420 MB (27% of RAM), while a 2-short / 2-default / 1-long Redis RQ pool adds 3,584 MB across 512 MB, 768 MB, and 1,024 MB worker tiers. Add 1,464 MB for Redis Cache, Redis Queue, Node Socket.IO on port 9000, Nginx, and Linux page cache, and the application stack already claims 58% of host memory before MariaDB opens a single connection.
We recommend locking innodb_buffer_pool_size at exactly 45% of RAM (7,372 MB on a 16 GB host) so tabGL Entry and Stock Ledger indexes remain resident without exposing mariadbd to Linux OOM kills during multi-level BOM explosions.
ERPNextCalc Guidance on Short, Default & Long RQ Separation
We advise isolating short (360s stopwait), default (600s), and long (1800s) Supervisor programs so bulk CSV imports never stall live POS receipts or invoice emails on hosts starting at $9.99/mo to $37.50/mo.
Full MariaDB root access, unlimited users & companies
Per-Seat SaaS ERP ($25/seat baseline)
$1,500.00/mo
$54,000.00
Linear per-seat fee growth for every warehouse tablet
Instance pricing throughout ERPNextCalc mirrors official 2026-11-12 public sheets; check the provider's live checkout screen for updated renewal terms.
ERPNextCalc Frappe v15 Architecture Diagrams
Redis Queue (:11000) & Redis Cache (:13000) isolation modeled by ERPNextCalcGunicorn worker scaling curve at 260 MB RSS per Frappe v15 worker16 GB co-located memory boundary: 45% InnoDB vs Python & Redis workersAnnual spend delta between per-seat SaaS ERP and fixed-RAM self-hosting
Calculate Gunicorn worker processes with (2 * vCPU) + 1, cap worker RSS at 260 MB via --preload, and eliminate 504 gateway timeouts on heavy ERPNext reports.
ERPNextCalc Guide: Redis RQ Short, Default & Long Queue Isolation
Prevent multi-level BOM explosions and fiscal closing vouchers from stalling POS email alerts by splitting Redis RQ into dedicated short, default, and long pools.
Configure Node.js Socket.IO on port 9000 for live document locking, background progress bars, and POS status streams without file-descriptor exhaustion.
Offload /assets/ JS/CSS bundles directly from Nginx, align proxy_read_timeout with Gunicorn http_timeout, and harden upload limits for ERPNext attachments.
ERPNextCalc FAQ: Why does Frappe v15 use gunicorn_workers = (2 * vCPU) + 1?
Keeping Gunicorn workers at (2 * vCPU) + 1 saturates Python I/O wait windows without triggering Linux context-switch thrash or starving MariaDB memory buffers.
ERPNextCalc FAQ: Why cap MariaDB innodb_buffer_pool_size at 45% RAM on a single node?
ERPNextCalc FAQ: Why split Redis RQ workers into short, default, and long queues?
Isolating short (512 MB), default (768 MB), and long (1024 MB) Supervisor groups stops multi-level BOM explosions or fiscal period closings from stalling POS alerts.
ERPNextCalc FAQ: How much does self-hosted ERPNext save vs $25/seat SaaS at 60 users?
At $25/seat/mo, 60 SaaS seats total $1,500.00/mo ($18,000/yr), whereas a fixed 16 GB UltaHost VDS runs $37.50/mo ($450/yr) on 2026-11-12 public rates.