设置 nproc 限制的示例
下面是一些使用文件 /etc/security/limits.conf 文件和 /etc/security/limits.d/90-nproc.conf(RHEL5. RHEL6)、/etc/security/limits 设置 nproc 值的示例。
d/20-nproc.conf (RHEL7):
- 在下面的示例中,nproc 限制设置为 2047,因为在limits.conf 中有2047 的硬限制。
# cat /etc/security/limits.conf | grep nproc | grep -v ^# test hard nproc 2047 test soft nproc 16384
# cat /etc/security/limits.d/90-nproc.conf | grep nproc | grep -v ^# * soft nproc 1024 root soft nproc unlimited test soft nproc 10023
# ulimit -u 2047
- 这里使用1022,因为最后一个条目是“test soft nproc 1022”,最大硬限制是“1025”。
# cat /etc/security/limits.conf | grep nproc | grep -v ^# test hard nproc 2048 test soft nproc 16384
# cat /etc/security/limits.d/90-nproc.conf | grep nproc | grep -v ^# * soft nproc 1024 * hard nproc 1025 root soft nproc unlimited test hard nproc 1025 test soft nproc 1022
# ulimit -u 1022
- 这里使用1025是因为设置了“test hard nproc 1025”,使用“test soft nproc 1066”是因为软限制超过了硬限制。
# cat /etc/security/limits.conf | grep nproc | grep -v ^# test hard nproc 1001 test soft nproc 16384
# cat /etc/security/limits.d/90-nproc.conf | grep nproc | grep -v ^# * soft nproc 1024 * hard nproc 1025 root soft nproc unlimited test hard nproc 1025 test soft nproc 1066
# ulimit -u 1025
- 这里使用1066是因为最后一项是“test soft nproc 1066”,1066没有超过硬限制。
# cat /etc/security/limits.conf | grep nproc | grep -v ^# test hard nproc 1001 test soft nproc 16384
# cat /etc/security/limits.d/90-nproc.conf | grep nproc | grep -v ^# * soft nproc 1024 * hard nproc 1025 root soft nproc unlimited test hard nproc 1100 test soft nproc 1066
# ulimit -u 1066
查看当前的 nproc 软/硬限制
Red Hat Enterprise Linux 系统使用两种类型的值来定义限制: soft 和 hard 。
不同之处在于“软”限制可以调整到“硬”限制,而“硬”限制只能减少,这是用户可能拥有的最大资源限制。
每当用户运行“ulimit -n”命令时,都会显示“软”限制。
因此,如果 '/etc/security/limits.conf' 文件设置了硬值,则默认情况下不会显示它。
要查看软限制,请使用以下命令:
# ulimit -u -S
同样,要查看硬限制,请使用以下命令:
# ulimit -u -H
本文说明了 Linux 系统管理员如何限制操作系统的每个用户允许的进程数。
有两个地方可以配置允许的最大进程数 (nproc)。
- /etc/security/limits.conf
- /etc/security/limits.d/90-nproc.conf ( CentOS/RHEL 5,6 ) 和 /etc/security/limits.d/20-nproc.conf ( CentOS/RHEL 7 )
来自 pam_limits 的手册页
如何设置 nproc(硬和软)限制
- 临时设置软nproc限制
“软”限制可以根据“硬”限制进行调整,其中 N 小于或者等于“硬”限制。
# ulimit -n N
例如:
# ulimit -n 1024
上述值不是永久的,并且不会在重新登录后持续存在。
我们可以在用户 bash 配置文件中输入上述命令,以便在用户每次登录时设置限制。
# vim ~/.bash_profile ulimit -n 1024
- 永久设置 nproc 硬/软限制
要将 nproc 限制设置为无限系统范围,文件 /etc/security/limits.d/90-nproc.conf(RHEL5. RHEL6)、/etc/security/limits.d/20-nproc.conf(RHEL7)应该读。
默认情况下,规则是从 /etc/security/limits.conf 文件中读取的。
此外,我们可以在 /etc/security/limits.d 目录中专门为某些应用程序或者服务创建单独的配置文件。
用户进程的默认限制在文件 /etc/security/limits.d/90-nproc.conf(RHEL5. RHEL6)、/etc/security/limits.d/20-nproc.conf(RHEL7)中定义,以防止恶意拒绝服务攻击,例如分叉炸弹。
要设置 nproc 的硬/软限制,请使用以下语法。
# vi /etc/security/limits.conf [domain] [type] [item] [value]
其中:
[domain] 可以是用户名、组名或者通配符条目。
[type] 表示限制的类型,它可以有以下值:
- soft :这是一个可以由用户更改的软限制
- hard :这是由超级用户设置并由内核强制执行的软限制上限
[item] 是要为其设置限制的资源。