Work out worker process count instantly with clear inputs, formula shown and shareable results.
For CPU-bound work, workers should roughly match cores. For I/O-bound work, each worker is blocked most of the time, so the useful count scales as cores divided by (1 - I/O fraction) — 8 cores at 65 percent I/O wait supports about 22 workers. Memory then caps it, and the binding constraint tells you which resource to buy.
Worker count
CPU limit = cores / (1 - I/O wait fraction); memory limit = available memory / per-worker memory; workers = min of the two
Each process costs memory and adds context switching. Past the point where cores are saturated, more workers increase latency without increasing throughput.
Threads are cheaper in memory, so the memory limit relaxes, but the CPU relationship is the same. For very high I/O concurrency, async event loops avoid per-connection cost entirely.