Permanently raising nofile limits in Ubuntu 14.04 LTS
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?
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