1. 系统最大打开文件描述符数:/proc/sys/fs/file-max
1.1. 查看
$ cat /proc/sys/fs/file-max
186405
1.2. 设置
a. 临时性
# echo 1000000 > /proc/sys/fs/file-max
1.3. 永久性:在/etc/sysctl.conf中设置
fs.file-max = 1000000
2. 进程最大打开文件描述符数:user limit中nofile的soft limit
常见配置如下:
* soft nproc 2047
* hard nproc 16384
* soft nofile 2048
* hard nofile 65536
*代表针对所有用户,nproc是代表最大进程数,nofile 是代表最大文件打开数
2.1 hard和soft的区别:
#-H :hard limit ,严格的设定,必定不能超过这个设定的数值
[root@dbserver ~]# ulimit -Hn
1024000
#-S :soft limit ,警告的设定,可以超过这个设定值,但是若超过则有警告信息
[root@dbserver ~]# ulimit -Sn
1024000
注意:在设定上,通常soft会比hard小,举例来说,soft可以设置为80,而hard设定为100,那么你可以使用到90(没有超过100),但介于80~100之间时,系统会有警告信息通知你。
#显示所有参数值
[root@dbserver ~]# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 512589
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 1024000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
2.2 修改limit:
#永久性修改
[root@dbserver ~]# vi /etc/security/limits.conf
......
* soft nofile 1024000
* hard nofile 1024000
* soft nproc unlimited
* hard nproc unlimited
* soft core unlimited
* hard core unlimited
* soft memlock unlimited
* hard memlock unlimited
#临时性修改
[root@dbserver ~]# ulimit -Sn 2048 #修改softlimit
[root@dbserver ~]# ulimit -Hn 2048 #修改hardlimit
2.3 修改完成后重启
3. 总结:
a. 所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max
b. 单个进程打开的文件描述符数不能超过user limit中nofile的soft limit
c. nofile的soft limit不能超过其hard limit
d. nofile的hard limit不能超过/proc/sys/fs/nr_open