- System level file limit
- User level limit
- process level limit
1024 by default
Every connection / process need to open at least 2 files,
Nginx active connection 524 -1024 by default for core.
1024*4 = 4080 active connections at least needed 8160 open file limit.
how to Check File descriptor limit per process Linux
cat /etc/security/limits.conf
* soft nofile 1024000
* hard nofile 1024000
* soft nproc 640000
* hard nproc 640000
root soft nproc 1000000
root soft nproc 100000
root soft nofile 100000
root hard nofile 100000
(*) means any user it could be nginx, mysql, php, redis etc
nproc = number of process (generally 2x of nofile)
nofile = number of open file
checking open file with ulimit command
root@localhost:~# ulimit -Sn
1024
root@localhost:~# ulimit -Hn
524288
H hard limits
S soft limits
we can raise soft limits upto hard limit.
How to check systemwide open file limit
root@localhost:~# cat /proc/sys/fs/file-max
2097152
10% memory
Check maximum process limit for user
so need at least 2 open files for 1 process.
root@localhost:~# ulimit -H -u
31498
root@localhost:~# ulimit -S -u
31498
increase process limit for user linux
first login as user,
sudo su mysql
ulimit -u 50000
root@localhost:~# ulimit -S -u
50000
increase open file limits for User command line with ulimit
-n (open files): 64000
-u (processes/threads): 64000
before
root@localhost:~# ulimit -Sn
1024
ulimit -n 100000
after
root@localhost:~# ulimit -n 100000
root@localhost:~# ulimit -Sn
100000
root@localhost:~# ulimit -Hn
100000
/ until restart only
Shared servers inode limit
150000
inode = number files in a hard disk or per account in shared hosting account to limit the unlimited disk space.
nginx check open file limit
cat /proc/{nginx-master-process-id}/limits
{nginx-master-process-id}
getting a nginx process ID
top -u nginx
ps aux | grep nginx
root 2950 0.0 0.1 232192 11544 ? Ss Jun01 0:00 nginx: master
cat /proc/2950/limits
Max open files
soft: 1024
hard 524288
Max processes 31498
Here every
Setting Open file limit nginx conf
Nginx: 24: Too Many Open Files Error And Solution
/etc/security/limits.conf
nginx soft nofile 10000
nginx hard nofile 30000
reload systcl
sysctl -p
nano /etc/nginx/nginx.conf
worker_rlimit_nofile 4096;
add this in nginx conf
restart or reload not kills nginx master process
other ways
edit the /lib/systemd/system/nginx.service
centos has different approach
/etc/security/limit.conf is used by PAM, so it shoud be nothing to do with www-data (it’s nologin user).
Increasing root user open file limits not working
root@localhost:~# ulimit -Sn
1024
root@localhost:~# ulimit -Hn
524288
(most systems do not allow this value to be set)
root@localhost:~# more /etc/systemd/system.conf | grep NOFILE
#DefaultLimitNOFILE=1024:524288
nano /etc/systemd/system.conf
DefaultLimitNOFILE=10024:524288
edit the above file
/etc/systemd/user.conf (may be required)
nano /etc/systemd/user.conf
nothing apperaed like above. ubuntu 20.04
SSHD Configuration file USE PAM = YES
this allows to ssh session to use pam limit
root@localhost:~# ulimit -n
100000
but nginx still at 1024 until it restarts, started as root
PAM limit module pam_limits.so
limits.conf –
is configuration file for the pam_limits module
nano /etc/pam.d/common-session
A reboot will show the limits
Appending the line *
for RHEL / centos / Fedora
nano /etc/pam.d/login
session required pam_limits.so
also mo0re about /etc/security/limit.conf file