Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

Error “Too many files open” on CentOS 

If you are encountering Error messages during login with “Too many open files” and the session gets
terminated automatically, it is because the open file limit for a user or system exceeds the default
setting and  you may wish to change it

@ System Levels
To see the settings for maximum open files,

# cat /proc/sys/fs/file-max

55494980

This value means that the maximum number of files all processes running on the system can open.
By default this number will automatically vary according to the amount of RAM in the system. As a
rough guideline it will be about 100,000 files per GB of RAM.

To override the system wide maximum open files, as edit the /etc/sysctl.conf

# vim /etc/sysctl.conf

fs.file-max = 80000000

Activate this change to the live system

# sysctl -p

@ User Level
To see the setting for maximum open files for a user

# su - user1
$ ulimit -n

1024

To change the setting, edit the /etc/security/limits.conf

$ vim /etc/security/limits.conf

user - nofile 2048

To change for all users

* - nofile 2048

This set the maximum open files for ALL users to 2048 files. These settings will require a reboot to
activate.

How to Increase Number of Open Files Limit in


Linux
In Linux, you can change the maximum amount of open files. You may modify this
number by using the ulimitcommand. It grants you the ability to control the resources
available for the shell or process started by it.

Read Also: Set Linux Running Processes Limits on Per-Userl Level

In this short tutorial we will show you how to check your current limit of open files and
files descriptions, but to do so, you will need to have root access to your system.

First, Lets see how we can find out the maximum number of opened file descriptors on
your Linux system.

Find Linux Open File Limit


The value is stored in:

# cat /proc/sys/fs/file-max
818354

The number you will see, shows the number of files that a user can have opened per
login session. The result might be different depending on your system.

For example on a CentOS server of mine, the limit was set to 818354, while
on Ubuntu server that I run at home the default limit was set to 176772.

If you want to see the hard and soft limits, you can use the following commands:

Check Hard Limit in Linux


# ulimit -Hn

4096

Check Soft Limits in Linux


# ulimit -Sn

1024

To see the hard and soft values for different users, you can simply switch user
with “su” to the user which limits you want to check.

For example:

# su marin

$ ulimit -Sn

1024

$ ulimit -Hn
4096

How to Check System wide File Descriptors Limits in Linux


If you are running a server, some of your applications may require higher limits for
opened file descriptors. A good example for such are MySQL/MariaDB services
or Apache web server.

You can increase the limit of opened files in Linux by editing the kernel
directive fs.file-max. For that purpose, you can use the sysctl utility.

Sysctl is used to configure kernel parameters at runtime.

For example, to increase open file limit to 500000, you can use the following command
as root:

# sysctl -w fs.file-max=500000

You can check the current value for opened files with the following command:

$ cat /proc/sys/fs/file-max

With the above command the changes you have made will only remain active until the
next reboot. If you wish to apply them permanently, you will have to edit the following
file:

# vi /etc/sysctl.conf

Add the following line:

fs.file-max=500000

Of course, you can change the number per your needs. To verify the changes again
use:

# cat /proc/sys/fs/file-max

Users will need to logout and login again for the changes to take effect. If you want to
apply the limit immediately, you can use the following command:

# sysctl -p
Set User Level Open File limits in Linux
The above examples, showed how to set global limits, but you may want to apply limits
per user basis. For that purpose, as user root, you will need to edit the following file:

# vi /etc/security/limits.conf

If you are a Linux administrator, I suggest you that you become very familiar with that
file and what you can do to it. Read all of the comments in it as it provides great
flexibility in terms of managing system resources by limiting users/groups on different
levels.

The lines that you should add take the following parameters:

<domain>        <type>  <item>  <value>

Here is an example of setting a soft and hard limits for user marin:

## Example hard limit for max opened files

marin        hard nofile 4096

## Example soft limit for max opened files

marin        soft nofile 1024

Final thoughts
This brief article showed you a basic example of how you can check and configure
global and user level limits for maximum number of opened files.

While we just scratched the surface, I highly encourage you to have a more detailed
look and read regarding /etc/sysctl.conf and /etc/security/limits.conf and learn how
to use them. They will be of great help for you one day.

You might also like