A connection can occupy resources while waiting, even when CPU usage is low. First identify which limit was reached instead of assuming the machine needs more processing power.
Count both sides of a proxy request
Client -- socket A --> Nginx -- socket B --> Backend
A proxied HTTP/1.x request can use one client connection and another upstream connection. If the backend stalls, both can remain occupied. worker_connections includes upstream connections, so its value is not simply the number of users supported.
