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

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2023-06-19 08:59:50

results matching ""

    No results matching ""