Ubuntu – Permanently raising nofile limits in Ubuntu 14.04 LTS

cronpamsshulimit

I cannot seem to figure out what exactly is needed to allow the maximum number of file descriptors to be raised permanently for all users.

/etc/security/limits.conf:

root    hard    nofile    1500000
root    soft    nofile    1000000
root    hard    nproc     15000
root    soft    nproc     10000
*       hard    nofile    1500000
*       soft    nofile    1000000
*       hard    nproc     15000
*       soft    nproc     10000

I have placed the following in the /etc/pam.d/common-session:

session required pam_limits.so

After a reboot, logging in as any user and issuing ulimit -n resulted in 1024.

After that, I tried requiring pam_limits.so into every file under /etc/pam.d. Rebooted. Logged in. No such luck.

If I issue the command ulimit -n 1000000, then check, the limit is set as expected. So, I placed @reboot ulimit -n 1000000 into crontab -e. Rebooted. Logged in. No luck.

I checked /etc/ssh/sshd_config and PAM is enabled.

I have tried setting the limits on every reboot with:

/sbin/sysctl -w fs.file-max=1000000
/sbin/sysctl -p

No luck.

I have a server that has a ton of concurrent traffic, and need those limits that high, because it takes the server a very long time to clear out file descriptors. What do I have to do in order to permanently raise the file descriptor limit?

Best Answer

I increased the number of files limits for everyone this way (segment from /etc/security/limits.conf):

#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files (Doug: - so Samba will not complain)
* - nofile 16384
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)

That was on a 12.04 server. However, I tested 100000 on my 14.04 server and it worked fine. (Edit: also checked on 20.04)

~/config/security$ ulimit -n
16384

EDIT: For most applications that is enough, but it doesn't change the default value for root:

# ulimit -n
1024

If the number also needs to be changed for root, then (2020.09.04 - I now use 131,072):

#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open file descriptors
* - nofile 131072
root - nofile 131072
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)

And so:

$ sudo su
# ulimit -n
131072
Related Question