file-max表示系统级别的能够打开的文件句柄的数量。是对整个系统的限制,并不是针对用户的。
ulimit -n 控制进程级别能够打开的文件句柄的数量。提供对shell及其启动的进程的可用文件句柄的控制。这是进程级别的。
对于服务器来说,file-max和ulimit都需要设置,否则会出现文件描述符耗尽的问题。
一般如果遇到文件句柄达到上限时,会碰到"Too many open files"或者Socket/File: Can’t open so many files等错误。
为了让服务器重启之后,配置仍然有效,需要用永久生效的配置方法进行修改。
max-file:
查看系统级别的能够打开的文件句柄的数量,rhel默认是98240
[root@server1 ~]# sysctl -a | grep file #方法一
fs.file-max = 98240
fs.file-nr = 832 0 98240
fs.xfs.filestream_centisecs = 3000
[root@server1 ~]# cat /proc/sys/fs/file-max #方法二
98240
系统级打开最大文件句柄的数量永久生效的修改方法,修改文件,文件末尾加入配置内容:
[root@server1 ~]# vim /etc/sysctl.conf
fs.file-max = 2000000
然后执行命令,使修改配置立即生效:
[root@server1 ~]# sysctl -p
如果需要设置当前用户session立即生效,还需要执行:
[root@server1 ~]# sysctl -w fs.file-max=2000000
fs.file-max = 2000000
[root@server1 ~]# sysctl -a | grep file
fs.file-max = 2000000
fs.file-nr = 832 0 2000000
fs.xfs.filestream_centisecs = 3000
ulimit:
查看用户进程级的能够打开文件句柄的数量,rhel7默认是1024
这里设置的是当前shell的当前用户的打开的最大限制,如果当前用户打开多个shell,则每个shell都能打开该最大值
[root@server1 ~]# ulimit -n
1024
进程级打开文件句柄数量永久生效的修改方法,修改文件,文件末尾加入配置内容:
这里限制一个用户的所有shell能打开的最大数:
[root@server1 ~]# vim /etc/security/limits.conf #*表示针对所有的用户
* soft nofile 655350
* hard nofile 655350
修改以后,需要重新登录才能生效。
如果需要设置当前用户session立即生效,还需要执行:
[root@server1 ~]# ulimit -n 655350
[root@server1 ~]# ulimit -n
655350
对于服务器,一般修改进程级的最大打开文件句柄数即可(系统默认1024,有点小)。一般不需要调整系统级的最大数。
如果出现了达到系统级别最大限制时,也需要同步调整系统级的最大数的。
————————————————
版权声明:本文为CSDN博主「Cinjosy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42303254/article/details/89504707