Linux增加了打开文件/文件描述符(FD)的最大数量

时间:2020-01-09 10:41:39  来源:igfitidea点击:

如何在CentOS Linux下增加打开文件的最大数量?
如何在Linux下打开更多文件描述符?

ulimit命令在允许进行控制的系统上,对shell程序和/或由shell程序启动的进程可用的资源进行控制。
使用以下命令显示的打开文件描述符的最大数量(以root用户身份登录)。

命令列出打开文件描述符的数量

使用以下命令命令显示打开文件描述符的最大数量:

cat /proc/sys/fs/file-max

输出:

75000

普通用户可以在单个登录会话中打开75000个文件。
要查看硬值和软值,请发出以下命令:

# ulimit -Hn
# ulimit -Sn

要查看httpd或oracle用户的硬值和软值,请发出以下命令:

# su - username

在此示例中,su为oracle用户,执行:

# su - oracle
$ ulimit -Hn
$ ulimit -Sn

系统范围的文件描述符(FD)限制

在Linux操作系统下,可以通过/etc/sysctl.conf文件更改整个系统中同时打开的文件描述符的数量。

已达到最大文件数,如何解决此问题?

许多应用程序,例如Oracle数据库或Apache Web服务器,都需要更高的范围。
因此,可以通过如下所述在内核变量/proc/sys/fs/file-max中设置一个新值来增加打开文件的最大数量(以root用户身份登录):

# sysctl -w fs.file-max=100000

以上命令将限制限制为100000个文件。
您需要编辑/etc/sysctl.conf文件并放入以下行,以便在重新启动后该设置将保持不变:

# vi /etc/sysctl.conf

追加如下的配置指令:

fs.file-max = 100000

保存并关闭文件。
用户需要注销并重新登录以使更改生效,或者只需执行以下命令:

# sysctl -p

使用以下命令验证您的设置:

# cat /proc/sys/fs/file-max

或者

# sysctl fs.file-max

用户级别的FD限制

上面的过程设置了系统范围的文件描述符(FD)限制。
但是,您可以通过编辑/etc/security/limits.conf文件将httpd(或任何其他用户)用户限制为特定限制,执行:

# vi /etc/security/limits.conf

如下设置httpd用户的软限制和硬限制:

httpd soft nofile 4096
httpd hard nofile 10240

保存并关闭文件。
要查看限制,请执行:

# su - httpd
$ ulimit -Hn
$ ulimit -Sn

关于RHEL/CentOS/Fedora/Scientific Linux用户的说明

编辑/etc/pam.d/login文件并添加/修改以下行(确保获得pam_limts.so):

session required pam_limits.so

保存并关闭文件。