Linux corrige el error Demasiados archivos abiertos

Linux corrige el error Demasiados archivos abiertos

Este tutorial explica cómo resolver el error de Linux "demasiados archivos abiertos".

Después de leer este artículo, comprenderá la causa del error que recibe y sabrá cómo solucionarlo. No solo aprenderá a corregir el error, sino también otros aspectos importantes de los procesos de sus archivos del sistema operativo Linux.

El significado del error de "demasiados archivos abiertos"

Cuando un usuario ejecuta un proceso, el proceso tiene archivos asociados que contienen información sobre el uso del archivo. Por ejemplo, los descriptores de archivos pueden informar al kernel cómo acceder a un archivo o cómo manejarlo en otro recurso. Por ejemplo, cuando usamos una tubería para redirigir un proceso a otro.

Por defecto, cada proceso ejecutado de Linux tiene al menos 3 archivos asociados llamados Descriptores de archivo: Stdin, stdout y stderr. Su función se muestra en la tabla a continuación.

Descriptor de archivo Número Función
Stdin 0 Se refiere al método de entrada del teclado
Stdout 1 Imprime o redirige la salida, se refiere a la pantalla
Stderr 2 Imprime o redirige errores, se refiere a la pantalla

Hay un límite de usuarios y procesos descriptores de archivos que se pueden ejecutar simultáneamente. Cuando se alcanza el límite y el usuario o el proceso intenta abrir descriptores de archivos adicionales, obtenemos el "Demasiados error de archivos abiertos".

Por lo tanto, la solución a este error es aumentar el límite de los descriptores de archivos que un usuario o proceso puede abrir.

Arreglar el error de Linux "demasiados archivos abiertos"

Para verificar el límite de archivos de descriptor para la sesión actual, ejecute el comando que se muestra a continuación.

ulimit -n

Como puede ver anteriormente, el límite es 1024.

Ahora, verifiquemos el límite del usuario ejecutando el siguiente comando:

ulimit -u

Para conocer el número de archivos actuales, puede usar el comando que se muestra en la captura de pantalla a continuación.

LSOF | WC -L

El comando que se muestra a continuación se puede usar para aumentar el límite de archivos de descriptor para resolver este error. Sin embargo, esto puede no funcionar si se alcanza el límite especificado en los archivos de configuración.

Como puede ver, el sistema no nos permite aumentar el límite. En tal caso, necesitamos editar un par de archivos.

En el primer archivo para editar, verá dos tipos de límites: límites duros y suaves:

El límite duro representa el límite máximo permitido para el límite blando. Editar el límite duro requiere privilegios.

Por otro lado, el sistema utiliza el límite suave para limitar todos los recursos del sistema para ejecutar procesos. El límite blando no puede ser más grande que el límite duro.

Puede aprender límites duros y suaves con los comandos que se muestran en la siguiente captura de pantalla, donde ulimit -sn muestra el límite suave y ulimit -hn muestra el límite duro.

Primero, abra el siguiente archivo con privilegios:

sudo nano/etc/seguridad/límites.confusión

Editar las líneas que se muestran a continuación aumentando el límite. En mi caso, aumento el límite blando de 1024 a 2048. Aquí, también puede editar el límite duro si es necesario.

Luego, reinicie el demonio-reexec usando SystemCTL como se muestra a continuación.

sudo systemctl demonio-reexec

Abra un nuevo terminal o reinicie la sesión para verificar que los cambios se realizaron con éxito e intente cambiar el ULIMIT nuevamente ejecutando el siguiente comando y cambie el límite para el que especificó en el /etc/seguridad/límites.confusión archivo.

ulimit -n 2048

Como puede ver anteriormente, el límite se actualizó con éxito.

En caso de que no funcione para usted, abra el siguiente archivo con privilegios:

sudo nano/etc/systemd/sistema.confusión

Encuentra la línea DefaultLimitNoFile = y cambiar el primer número antes del colon, aumentando el límite. En mi caso lo aumenté de 1024 a 2048. Luego, cierre y salga del archivo Guardando los cambios.

Además, abra el siguiente archivo con privilegios:

sudo nano/etc/systemd/usuario.confusión

Encuentre la misma línea y edítelo, repitiendo los cambios realizados anteriormente.

Reinicie el demonio reexec de nuevo usando systemctl.

sudo systemctl demonio-reexec

Reinicie la sesión y use el siguiente comando, reemplazando 2048 con el límite que desea establecer y configurado en los archivos de configuración:

ulimit -n 2048

El siguiente comando devuelve el límite para todo el sistema:

Cat/Proc/Sys/FS/File-Max

Cambia el límite del sistema usando el siguiente comando:

sudo sysctl -w fs.file-max =

Para que el cambio sea permanente, edite el siguiente archivo con privilegios:

sudo nano /etc /sysctl.confusión

Agregue la siguiente línea reemplazando Con el nuevo límite que desea establecer:

FS.file-max =

Reiniciar para aplicar nuevos cambios con el comando a continuación.

sudo sysctl -p

Eso es todo, después de aumentar el Ulimit, el "Demasiados archivos abiertosEl error debe solucionarse.

Conclusión

Este error puede ser fácilmente corregido por cualquier usuario de Linux. Linux ofrece diferentes formas de abordar este problema, no dude en probarlos todos para deshacerse de este error. Los pasos descritos anteriormente son válidos para muchas distribuciones de Linux, pero se realizan en distribuciones basadas en Debian. Si está interesado en conocer los descriptores de archivos, hemos publicado contenido específico sobre este tema que puede leer en este sitio. Los descriptores de archivos son un componente básico de todos los sistemas operativos.

Gracias por leer este tutorial explicando cómo resolver el error de "demasiados archivos abiertos" en Linux. Sigue siguiéndonos para más artículos profesionales de Linux.