1. /proc/sys/fs/file-max
1.1. 理解分析
[root@localhost ~]#cat /proc/sys/fs/file-max
6527711
Linux中/proc/sys/fs/file-max
决定了整个系统能够打开的最大文件数量,是系统级别的限制。与此相关的概念还有/proc/sys/fs/file-nr
显示当前系统打开的文件句柄状态、ulimit设置打开文件的句柄数、用户打开文件句柄数限制。
首先,建议file-max中的值设置为内存大小以K为单位时的10%。这只是一个建议值,root可以修改为其他需要的值。
[root@localhost ~]#free -k
total used free shared buffers cached
Mem: 62914560 7479548 55435012 0 0 7361384
-/+ buffers/cache: 118164 62796396
Swap: 2088956 0 2088956
[root@localhost ~]#cat /proc/sys/fs/file-max
6527711
其次,要注意的是file-max值是整个系统全局的一个打开文件数量的限制,是一个硬上线,当文件打开的数量超过该值时就会报错。too many open files之类的messages报错可能会暂满磁盘。
于此相关的一个文件是/proc/sys/fs/file-nr
,他是当前系统中已经打开的文件句柄的一个状态。他有三个值,分别是:
1.已经分配的文件句柄数
2.已经分配但没有使用的文件句柄数
3.最大文件句柄数
具体详细内容请阅读【/proc/sys/fs/file-nr】文章
[root@localhost ~]#cat /proc/sys/fs/file-nr
1248 0 6527711
于此相关的还有ulimit中对打开文件的限制,ulimit是限制当前shell所有进程打开的文件数量。
但是一个用户可以打开多个shell,那么对某个用户打开文件的量的限制在/etc/security/limits.conf或/etc/security/limits.d/中配置。
1.2. 配置设置
临时修改
修改内核文件
echo 6527711 > /proc/sys/fs/file-max
命令行修改
sysctl -w fs.file-max=102400
安全修改
修改 /etc/sysctl.conf
echo 'fs.file-max = 6527711' >> /etc/sysctl.conf
sysctl -p
1.3. 中文翻译
获取该内容可以通过man proc
命令来查看。
这个文件定义了系统系别的限制,即所有进程能够打开文件的总数量。(同时一些程序可以通过setrlimit调用,设置每个进程打开文件量的限制。)如果你有大量的文件句柄不足的错误告警,可以尝试修改增大这个值。
echo 100000 > /proc/sys/fs/file-max
file-max的默认值是内核常量NR_OPEN,但这个上线可以被值修改。
如果你要增加/proc/sys/fs/file-max
的值,请确定/proc/sys/fs/inode-max
的值是/proc/sys/fs/file-max
新值的3-4倍,否则可能会inodes不足。
This file defines a system-wide limit on the number of open files for all processes. (See also setrlimit(2), which can be used by a process to set the per-process limit, RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages about running out of file handles, try increasing this value:
echo 100000 > /proc/sys/fs/file-max
The kernel constant NR_OPEN imposes an upper limit on the value that may be placed in file-max.
If you increase /proc/sys/fs/file-max, be sure to increase /proc/sys/fs/inode-max to 3-4 times the new value of /proc/sys/fs/file-max, or you will run out of inodes.
1.4. 参考资料
http://zhangxugg-163-com.iteye.com/blog/1108402 http://www.opstool.com/article/166 http://wushank.blog.51cto.com/3489095/1617874