Cómo Solucionar el Error 'Too Many Open Files' en Linux de Forma Definitiva

Cómo Solucionar el Error 'Too Many Open Files' en Linux de Forma Definitiva
Anuncio relacionado

Introducción al Error Too Many Open Files en Linux

Uno de los problemas más frustrantes que enfrentan los administradores de sistemas y desarrolladores en entornos Linux es el error Too Many Open Files (Demasiados archivos abiertos). Este fallo se manifiesta generalmente en servidores web, bases de datos o aplicaciones de alta concurrencia como Nginx, Apache, MySQL o Node.js, provocando caídas inesperadas del servicio.

Causas Principales del Error de Archivos Abiertos

En Linux, absolutamente todo se gestiona como un archivo, incluyendo sockets de red, tuberías (pipes) y directorios. Por defecto, los sistemas operativos establecen un límite estricto en la cantidad de descriptores de archivos que un usuario o un proceso específico puede abrir simultáneamente para evitar ataques de denegación de servicio (DoS) o consumo desmedido de recursos. Cuando una aplicación supera este umbral, el kernel bloquea nuevas solicitudes devolviendo el código de error EMFILE.

Método 1: Comprobar y Modificar los Límites Actuales Temporalmente

Para verificar el límite actual de archivos abiertos permitido para tu usuario actual, ejecuta el siguiente comando en tu terminal:

ulimit -n

Si necesitas incrementar este límite de forma temporal para la sesión actual de la terminal, puedes utilizar el comando ulimit seguido del nuevo valor deseado:

ulimit -n 65535

Ten en cuenta que este cambio se revertirá automáticamente en cuanto cierres la sesión de la terminal actual.

Método 2: Aumentar el Límite de Archivos Abiertos Permanentemente

Para solucionar el problema de raíz y asegurar que el nuevo límite persista tras reiniciar el sistema, debes modificar la configuración del módulo PAM y los límites del sistema operativo.

  1. Abre el archivo de configuración de límites con privilegios de superusuario: sudo nano /etc/security/limits.conf
  2. Agrega las siguientes líneas al final del documento para establecer límites estrictos y suaves tanto para usuarios específicos como de forma global:

* soft nofile 65535

* hard nofile 65535

  1. Guarda los cambios y cierra el editor presionando Ctrl + O, luego Enter, y finalmente Ctrl + X.

Método 3: Configurar Systemd para Servicios Específicos

Si la aplicación que genera el error se ejecuta como un servicio gestionado por systemd (por ejemplo, Nginx, Docker o PostgreSQL), el archivo limits.conf podría ser ignorado. Debes configurar el servicio directamente:

  1. Crea un directorio de anulación para el servicio afectado: sudo mkdir -p /etc/systemd/system/nombre-servicio.service.d/
  2. Crea y edita un archivo de configuración de anulación: sudo nano /etc/systemd/system/nombre-servicio.service.d/override.conf
  3. Añade las siguientes directivas dentro del archivo:

[Service]

LimitNOFILE=65535

  1. Recarga el demonio de systemd y reinicia el servicio para aplicar los cambios:

sudo systemctl daemon-reload

sudo systemctl restart nombre-servicio

Anuncio
Seguir Leyendo

Guías y Soluciones Relacionadas

Windows Apps Juegos
Apps

Cómo Solucionar el Error ERR_CONNECTION_RESET en Google Chrome de Forma Definitiva

Aprende a solucionar el molesto error ERR_CONNECTION_RESET en Google Chrome de manera rápida y efectiva con este tutorial detallado.

Leer guía completa →
Windows

Cómo Solucionar el Error 0x80070002 en Windows 10 y 11 Definitivamente

El error 0x80070002 suele interrumpir las actualizaciones de Windows. Aprende a solucionarlo aplicando nuestros métodos probados.

Leer guía completa →
Apps

Cómo Solucionar el Error de Pantalla Blanca en Notion de Forma Definitiva

¿La aplicación de Notion se queda en blanco y no carga? Descubre las causas principales y los métodos definitivos para solucionarlo.

Leer guía completa →