Tenemos un cuadro de CentOS que estoy tratando de aumentar el número máximo de archivos que un usuario puede tener abierto. Actualmente cuando corro ulimit -Sn
me sale 1024
y ulimit -Hn
da 4096
. Necesito ese número alrededor de 6000.
En que /etc/sysctl.conf
me he puesto fs.file-max = 100000
. En /etc/security/limits.conf
tengo el siguiente conjunto:
username soft nofile 6000
username hard nofile 65535
Me desconecté y volví a iniciar sesión como username
pero todavía no veo mis cambios. ¿Qué necesito para cambiar este valor?
Todo lo que tengo en /etc/security/limits.d
es 90-nproc.conf
. También me aseguré de que no se llame a ulimit en mi .bash_profile o .bashrc.
Cuando lo ejecuto sysctl -p
escupe la configuración que quiero y muestra el valor fs.file-max
que quiero. Pero cuando corro ulimit -Sn
, obtengo 1048. Si trato de correr sysctl --system
, obtengo error: Unknown parameter "--system"
.
Respuestas:
Para forzar
/etc/sysctl.conf
a ser leído nuevamente, ejecutesysctl -p
.El archivo
/etc/security/limits.conf
se lee mediante shells de inicio de sesión y debe cerrar las ventanas de las sesiones activas si está en la GUI. Para inicios de sesión remotos, surte efecto en el relog.fuente
fs.file-max
es el número máximo de archivos abiertos en el sistema. Es un límite difícil y no se verá reflejado por lasulimit
llamadas en su caso.Como ha dicho otro póster, necesita que sysctl establezca el valor en el kernel en ejecución. Hay varias formas de establecer el valor sin reiniciar:
En mi humilde opinión, el último método es el mejor, ya que replica el orden en que se aplicaría la configuración durante el arranque (y, por lo tanto, si tiene un conflicto, se hará evidente).
Nota: No estoy seguro de qué versión de CentOS está usando, pero al menos en 7 me he encontrado con un problema en el que si dracut reconstruye initramfs por algún motivo (como al instalar un nuevo módulo de kernel) se copiará el contenido de /etc/sysctl.* en initramfs, que luego será ejecutado por systemd-sysctl durante esa fase, incluso si luego elimina esas entradas de /etc/sysctl.conf.
En mi entorno, he editado el módulo systemd dracut para excluir /etc/sysctl.* de ese entorno (ya que esas configuraciones se establecerán una vez que se monte el rootfs y se ejecute systemd-sysctl nuevamente). Es solo un problema con el que podrías toparte.
fuente