Búsqueda de sitios web

Cómo aumentar el número de límites de archivos abiertos en Linux


En Linux, puedes cambiar la cantidad máxima de archivos abiertos. Puede modificar este número utilizando el comando ulimit. Le otorga la capacidad de controlar los recursos disponibles para el shell o el proceso iniciado por él.

Lea también: Establezca límites de procesos en ejecución de Linux a nivel por usuario

En este breve tutorial, le mostraremos cómo verificar su límite actual de archivos abiertos y descripciones de archivos, pero para hacerlo, necesitará tener acceso de root a su sistema.

Primero, veamos cómo podemos averiguar la cantidad máxima de descriptores de archivos abiertos en su sistema Linux.

Encuentra el límite de archivos abiertos de Linux

El valor se almacena en:

cat /proc/sys/fs/file-max

818354

El número que verá muestra la cantidad de archivos que un usuario puede haber abierto por sesión de inicio de sesión. El resultado puede ser diferente dependiendo de su sistema.

Por ejemplo, en mi servidor CentOS, el límite se estableció en 818354, mientras que en el servidor Ubuntu que ejecuto en casa, el límite predeterminado era establecido en 176772.

Si desea ver los límites estrictos y flexibles, puede utilizar los siguientes comandos:

Verificar límite estricto en Linux

ulimit -Hn

4096

Verifique los límites suaves en Linux

ulimit -Sn

1024

Para ver los valores estrictos y flexibles para diferentes usuarios, simplemente puede cambiar de usuario con “su” al usuario cuyos límites desea verificar.

Por ejemplo:

su marin
ulimit -Sn

1024
ulimit -Hn

4096

Cómo verificar los límites de los descriptores de archivos de todo el sistema en Linux

Si está ejecutando un servidor, algunas de sus aplicaciones pueden requerir límites más altos para los descriptores de archivos abiertos. Un buen ejemplo de ello son los servicios MySQL/MariaDB o el servidor web Apache.

Puede aumentar el límite de archivos abiertos en Linux editando la directiva del kernel fs.file-max. Para ello, puede utilizar la utilidad sysctl.

Sysctl se utiliza para configurar los parámetros del kernel en tiempo de ejecución.

Por ejemplo, para aumentar el límite de archivos abiertos a 500000, puede utilizar el siguiente comando como root:

sysctl -w fs.file-max=500000

Puede verificar el valor actual de los archivos abiertos con el siguiente comando:

cat /proc/sys/fs/file-max

Con el comando anterior los cambios que hayas realizado sólo permanecerán activos hasta el próximo reinicio. Si deseas aplicarlos de forma permanente, tendrás que editar el siguiente archivo:

vi /etc/sysctl.conf

Agregue la siguiente línea:

fs.file-max=500000

Por supuesto, puede cambiar el número según sus necesidades. Para verificar los cambios nuevamente use:

cat /proc/sys/fs/file-max

Los usuarios deberán cerrar sesión y volver a iniciarla para que los cambios surtan efecto. Si desea aplicar el límite inmediatamente, puede utilizar el siguiente comando:

sysctl -p

Establecer límites de archivos abiertos a nivel de usuario en Linux

Los ejemplos anteriores mostraron cómo establecer límites globales, pero es posible que desee aplicar límites por usuario. Para ello, como usuario root, necesitarás editar el siguiente archivo:

vi /etc/security/limits.conf

Si es administrador de Linux, le sugiero que se familiarice con ese archivo y con lo que puede hacer con él. Lea todos los comentarios que contiene, ya que proporciona una gran flexibilidad en términos de administración de recursos del sistema al limitar usuarios/grupos en diferentes niveles.

Las líneas que debes agregar toman los siguientes parámetros:

<domain>        <type>  <item>  <value>

A continuación se muestra un ejemplo de cómo establecer límites estrictos y flexibles para el usuario marin:

## Example hard limit for max opened files
marin        hard nofile 4096
## Example soft limit for max opened files
marin        soft nofile 1024

Pensamientos finales

Este breve artículo le mostró un ejemplo básico de cómo puede verificar y configurar límites globales y de nivel de usuario para la cantidad máxima de archivos abiertos.

Si bien solo estamos arañando la superficie, le recomiendo que eche un vistazo más detallado y lea sobre /etc/sysctl.conf y /etc/security/limits.conf y aprende a usarlos. Algún día te serán de gran ayuda.