Linux 增加最大打开文件数/文件描述符(FD)
CentOS Linux 下如何增加最大打开文件数?Linux 下如何打开更多文件描述符?
在允许进行此类控制的系统上,ulimit 命令可控制 shell 和/或由其启动的进程可用的资源。使用以下命令显示打开的文件描述符的最大数量(以 root 用户身份登录)。
列出打开文件描述符数量的命令
使用以下命令显示最大打开文件描述符的数量:
cat /proc/sys/fs/file-max
输出:
75000
普通用户可以在单次登录会话中打开 75000 个文件。要查看硬值和软值,请发出以下命令:
要查看 httpd 或 oracle 用户的硬值和软值,请发出以下命令:
在此示例中,su 到 oracle 用户,输入:
# ulimit -Hn
# ulimit -Sn
# su - username
# 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
保存并关闭文件。