How to set nginx max open files? How to set nginx max open files? linux linux

How to set nginx max open files?


On CentOS (tested on 7.x):

Create file /etc/systemd/system/nginx.service.d/override.conf with the following contents:

[Service]LimitNOFILE=65536

Reload systemd daemon with:

systemctl daemon-reload

Add this to Nginx config file:

worker_rlimit_nofile 16384; (has to be smaller or equal to LimitNOFILE set above)

And finally restart Nginx:

systemctl restart nginx

You can verify that it works with cat /proc/<nginx-pid>/limits.


I found the answer in few minutes after posting this question...

# cat /etc/default/nginx# Note: You may want to look at the following page before setting the ULIMIT.#  http://wiki.nginx.org/CoreModule#worker_rlimit_nofile# Set the ulimit variable if you need defaults to change.#  Example: ULIMIT="-n 4096"ULIMIT="-n 15000"

/etc/security/limit.conf is used by PAM, so it shoud be nothing to do with www-data (it's nologin user).


For nginx simply editing nginx.conf and setting worker_rlimit_nofile should change the limitation. I initially thought it is a self-imposed limit of nginx, but it increases limit per process:

worker_rlimit_nofile 4096;

You can test by getting a nginx process ID (from top -u nginx), then run:

cat /proc/{PID}/limits

To see the current limits

Another way on CentOS 7 is by systemctl edit SERVICE_NAME, add the variables there:

[Service]LimitNOFILE=65536

save that file and reload the service.