What is the maximum nginx worker_connections I can set for my droplet?

November 17, 2018 1.3k views
Nginx Ubuntu 18.04

I have a NodeJS API running on a 4GB Memory and 2 Core CPU Standard Droplets. The API has real time functionalities using Socket.io and is serving around 500 concurrent users.

Lately I noticed that the API sometimes stop handling any requests for like 5 - 10 seconds and then continues to work.

When I checked Nginx error logs I found this alert occurring a lot :-

[alert] 7193#7193: 768 worker_connections are not enough

Could this be the issue making the API miss some requests?

And how do I know what is the maximum worker_connections I can set? Currently it is set to 768

1 Answer

worker_connections is bound by worker_rlimit_nofile. So always set it to be equal or less than the value of worker_rlimit_nofile. worker_rlimit_nofile is bound by the ulimit of number of open files for the user (/etc/security/limits.conf) and is in turn limited by the kernel's fs.file-max:

# sysctl fs.file-max
fs.file-max = 9883453

  • I ran $ sysctl fs.file-max and it gave me a result of fs.file-max = 400225
    Does that mean I should set the worker_connections to 400225? And how do I increase the number of open files?

Have another answer? Share your knowledge.