Esta publicación describe cómo un administrador del sistema Linux puede limitar la cantidad permitida de procesos para cada usuario del sistema operativo. Hay dos lugares donde se permite el número máximo de procesos (nproc ) se puede configurar.
- /etc/security/limits.conf
- /etc/security/limits.d/90-nproc.conf (CentOS/RHEL 5,6) y /etc/security/limits.d/20-nproc.conf (CentOS/RHEL 7)
de la página man de pam_limits
Por defecto, los límites se toman de /etc/security/limits.conf archivo de configuración. Luego, archivos individuales *.conf de /etc/security/limits.d/ se lee el directorio. Los archivos se analizan uno tras otro en el orden de la configuración regional "C". El efecto de los archivos individuales es el mismo que si todos los archivos estuvieran concatenados en el orden de análisis. Si un archivo de configuración se especifica explícitamente con una opción de módulo, los archivos en el directorio anterior no se analizan.Visualización de los límites flexibles/duros actuales de nproc
El sistema Red Hat Enterprise Linux utiliza dos tipos de valores para definir los límites:soft y duro . La diferencia es que el límite "suave" se puede ajustar hasta el límite "duro", mientras que el límite "duro" solo se puede reducir y es el límite máximo de recursos que un usuario puede tener.
Cada vez que un usuario ejecuta un comando "ulimit -n", se le presentará el límite "suave". Por lo tanto, si el archivo '/etc/security/limits.conf' tiene un valor establecido, no se presentará de forma predeterminada.
– Para ver los límites flexibles, use el siguiente comando:
# ulimit -u -S
– Del mismo modo, para ver los límites estrictos, use el siguiente comando:
# ulimit -u -H
Cómo establecer límites nproc (duros y blandos)
El límite 'suave' se puede ajustar sobre el límite 'duro' con el siguiente donde N es menor o igual que el límite 'duro'.
# ulimit -n N
Por ejemplo:
# ulimit -n 1024
El valor anterior no es permanente y no persistirá en los reinicios de sesión. Puede realizar una entrada del comando anterior en el perfil de bash de los usuarios para que el límite se establezca cada vez que el usuario inicie sesión.
# vim ~/.bash_profile ulimit -n 1024
– Para establecer el límite de nproc en un sistema ilimitado, el archivo /etc/security/limits.d/90-nproc.conf (RHEL5, RHEL6), /etc/security/limits.d/20-nproc. conf (RHEL7) debe leer. De manera predeterminada, las reglas se leen del archivo /etc/security/limits.conf.
– Además, puede crear archivos de configuración individuales en el directorio /etc/security/limits.d específicamente para ciertas aplicaciones o servicios.
– Se define un límite predeterminado de procesos de usuario en el archivo /etc/security/limits.d/90-nproc.conf (RHEL5, RHEL6), /etc/security/limits.d/20-nproc.conf (RHEL7), para evitar ataques maliciosos de denegación de servicio, como bombas de bifurcación.
Para establecer un límite duro/blando de nproc, utilice la siguiente sintaxis.
# vi /etc/security/limits.conf [domain] [type] [item] [value]
Aquí,
[dominio] puede ser un nombre de usuario, un nombre de grupo o una entrada comodín.
[tipo] denota el tipo de límite y puede tener los siguientes valores:
- suave :Este es un límite suave que puede ser cambiado por el usuario
- duro :Este es un límite en el límite suave establecido por el superusuario y aplicado por kernel
[elemento] es el recurso para el que establecer el límite.
Ejemplos de configuración de límites de nproc
A continuación se muestran algunos ejemplos de configuración de valores de nproc utilizando los archivos /etc/security/limits.conf y /etc/security/limits.d/90-nproc.conf (RHEL5, RHEL6), /etc/security/limits. d/20-nproc.conf (RHEL7):
1. En el ejemplo a continuación, el límite de nproc se establece en 2047, ya que hay un límite estricto de 2047 en limits.conf.
# 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
2. Aquí se usa 1022 porque la última entrada es "test soft nproc 1022", el límite duro máximo sería "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
3. Aquí se usa 1025 porque está configurado "test hard nproc 1025", se usa "test soft nproc 1066" porque el límite suave excede el límite duro.
# 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
4. Aquí se usa 1066 porque la última entrada es "test soft nproc 1066" y 1066 no excede el límite estricto.
# 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 1066Comprender el archivo /etc/security/limits.conf