Derive NGINX connection capacity from worker processes and worker_connections, and the proxy buffer memory it commits.
Every connection slot in NGINX maps to a file descriptor, and a reverse-proxied request holds two — one facing the client and one facing the upstream. Little's law converts a request rate and duration into the number of slots actually occupied, which is usually a tiny fraction of the configured ceiling. Raising worker_connections without raising worker_rlimit_nofile is the classic NGINX misconfiguration, and the buffer memory column shows why a generous proxy_buffers setting can commit gigabytes of RAM.
NGINX Capacity
max connections = worker_processes × worker_connections; when proxying, each request consumes two slots (client and upstream), so proxied capacity is half that.
max connections = worker_processes × worker_connections; when proxying, each request consumes two slots (client and upstream), so proxied capacity is half that. Every connection slot in NGINX maps to a file descriptor, and a reverse-proxied request holds two — one facing the client and one facing the upstream. Little's law converts a request rate and duration into the number of slots actually occupied, which is usually a tiny fraction of the configured ceiling.
Raising worker_connections without raising worker_rlimit_nofile is the classic NGINX misconfiguration, and the buffer memory column shows why a generous proxy_buffers setting can commit gigabytes of RAM.
This calculator takes 5 inputs: worker_processes, worker_connections, Requests per second, Average request duration, proxy_buffers per connection. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.