如何在Ubuntu和Debian中增加打开文件数量的限制
时间:2019-05-19 01:26:31 来源:igfitidea点击:
有时我们会遇到Linux系统上 “打开的文件太多” Too many open files这样的问题。
这意味着我们的服务器已经达到了打开文件的最大限制。
这是因为系统为任何用户或会话设置了资源限制。
例如,创建的文件的最大大小、锁定在内存中的最大大小、使用的最大CPU时间、允许的最大进程数、可用虚拟内存的最大大小。
基本上有两种类型的限制:
一个 硬限制(hard limit)是一个用户或会话允许的最大限制,它是由超级用户/root设置的。
一个 软限制(soft limit)是用户或会话的当前有效值,可由用户增加到硬限制。
检查当前的限制
命令通过shell提供对每个用户可用资源的控制。
我们可以使用下面的命令来获取当前设置。
ulimit -a
要查看当前的硬限制或软限制,请使用以下命令。
ulimit -Sn # Check soft limit ulimit -Hn # Check hard limit
提高当前会话的限制
大多数操作系统可以使用ulimit -n
命令更改当前shell会话的打开文件限制:
ulimit -n 200000
增加每个用户的限制数量
可以在基于Debian的Linux系统上定义每个用户打开的文件限制。
要设置每个用户的限制,请在文本编辑器中编辑/etc/security/limits.conf
文件。
sudo vim /etc/security/limits.conf
在文件中添加以下值:
* soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535 Hyman soft nproc 200000 Hyman hard nproc 200000 Hyman soft nofile 200000 Hyman hard nofile 200000
在这里,我们为用户“Hyman”指定了单独的限制,即200000,而65535将应用于其他用户。
我们可以根据需求更改这些值。
然后启用pam_limits,如下所示:
sudo vim /etc/pam.d/common-session
添加以下行:
session required pam_limits.so
增加系统机的限制
我们还可以通过编辑sysctl配置文件来设置系统范围内的限制。
编辑sysctl.conf文件:
vim /etc/sysctl.conf
添加下面行:
fs.file-max = 2097152
然后运行以下命令应用上述更改:
sysctl -p
上述更改将增加可在系统范围内保持打开的文件的最大数量。
特定用户限制不能高于系统范围限制。