fix NGINX too many open files error

How to Fix NGINX: Too Many Open Files Error

NGINX is a popular web server used by many websites. Sometimes, you may get “Too Many Open Files” error in NGINX server. In this article, we will look at how to fix this problem.


How to Fix NGINX: Too Many Open Files Error

Here are the steps to fix NGINX “Too Many Open Files” error. It is important to understand that Linux sets soft/hard limits on the number of files NGINX is allowed to keep open at any given time. When this limit is exceeded, you see “Too Many Open Files” error.

You can view these limits using ulimit command

$ ulimit -Hn #hard limit
$ ulimit -Sn #soft limit

There are a couple of ways to fix this problem. You can increase this limit in Linux at an OS level, or you can increase it at process level. We will look at both these approaches.

Also read : How to List NGINX Modules & Compiled Flags


Increase Open FD Limit at Linux OS Level

In this method, we basically increase the OS limits for NGINX to enable it to open more files. Open terminal and run the following command to open system configuration file.

$ sudo vi /etc/sysctl.conf

Look for the following line

fs.file-max = 70000

Increase 70000 to a number of your choice. Don’t increase it too much else it will cause memory-related problems. Save and close the file.

Open /etc/security/limits.conf in a text editor.

$ sudo /etc/security/limits.conf

Add the following lines to set soft and hard limits for NGINX.

nginx       soft    nofile   10000 
nginx       hard    nofile  30000

Save and close the file. Reload the system configuration with the following commands.

$ sysctl -p

Also read : How to Redirect HTTP to HTTPS to Custom Port


Increase NGINX worker_rlimit_nofile Option

NGINX also provides worker_rlimit_nofile directive to control the number of open files. You can increase this limit to fix the “Too many open files” problem.

Open the file in a text editor.

$ vi /usr/local/nginx/conf/nginx.conf

Add or modify the following line to set open file limit to 25000

# set open fd limit to 25000 
worker_rlimit_nofile 25000;

Save and close the file. Reload NGINX with updated configuration.

# /usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload

Now when you check the ulimits for NGINX, you will see updated values.

$ sudo ulimit -Hn
30000
$ sudo ulimit -Sn
10000

Please increase the NGINX file limits only if it is absolutely necessary. The default settings of Linux and NGINX are good enough for most websites. If you are not careful with these limits, it can affect performance of your website performance and even other processes in the system.

Also read : How to Rsync Files Between Two Servers

Leave a Reply

Your email address will not be published. Required fields are marked *