Cómo Solucionar el Error 'Demasiados archivos abiertos' (Too Many Open Files) en Linux de Forma Definitiva

Cómo Solucionar el Error 'Demasiados archivos abiertos' (Too Many Open Files) en Linux de Forma Definitiva
Anuncio relacionado

Introducción al Error 'Demasiados Archivos Abiertos' en Linux

Uno de los problemas más frustrantes que enfrentan los administradores de sistemas y desarrolladores en entornos Linux es el célebre error Too many open files (Demasiados archivos abiertos). Este fallo suele manifestarse en servicios web como Nginx o Apache, bases de datos como MySQL, o aplicaciones en Node.js que manejan un alto tráfico de conexiones concurrentes.

En el sistema operativo Linux, todo se trata como un archivo: desde los documentos de texto tradicionales hasta los sockets de red, tuberías (pipes) y directorios. Por defecto, las distribuciones Linux imponen límites estrictos en la cantidad de descriptores de archivos (file descriptors) que un proceso o un usuario individual puede abrir simultáneamente para proteger los recursos del hardware.

Causas Principales del Problema

Existen principalmente dos motivos por los cuales tu sistema Linux lanza este error:

  • Límite por usuario o proceso muy bajo: La configuración predeterminada del kernel o del shell (ulimit) restringe drásticamente el número máximo de descriptores permitidos.
  • Fugas de recursos (Resource Leaks): Aplicaciones mal optimizadas que abren conexiones o archivos constantemente pero olvidan cerrarlos al finalizar la tarea.

Método 1: Comprobar y Modificar el Límite con Ulimit (Temporal)

Para verificar cuál es el límite actual de archivos abiertos en tu sesión de terminal actual, ejecuta el siguiente comando:

ulimit -n

Si deseas aumentar este límite de forma temporal para la sesión actual, puedes utilizar el comando:

ulimit -n 65535

Nota que este cambio solo tendrá efecto en la terminal actual y se restablecerá tan pronto como cierres sesión o reinicies el equipo.

Método 2: Aumentar el Límite de Archivos Abiertos de Forma Permanente (Pam Limits)

Para solucionar el problema de manera definitiva para todos los usuarios o para un usuario específico, debes modificar la configuración del sistema operativo. Sigue estos pasos:

  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 (soft y hard) elevados:
  3. * soft nofile 65535
    * hard nofile 65535
  4. Guarda los cambios presionando Ctrl + O y sal con Ctrl + X.

Método 3: Ajustar el Límite para Servicios del Sistema (Systemd)

Si el error ocurre en un servicio gestionado por Systemd (como Docker, Nginx o un script personalizado), 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/tu-servicio.service.d
  2. Crea y edita el archivo de anulación: sudo nano /etc/systemd/system/tu-servicio.service.d/override.conf
  3. Añade las siguientes directivas dentro del archivo:
  4. [Service]
    LimitNOFILE=65535
  5. Recarga el demonio de Systemd y reinicia tu servicio para aplicar los cambios:
  6. sudo systemctl daemon-reload
    sudo systemctl restart tu-servicio

Con estos pasos habrás superado el límite predeterminado de Linux y tus aplicaciones podrán gestionar miles de conexiones y archivos sin volver a arrojar el molesto error de descriptores agotados.

Anuncio
Seguir Leyendo

Guías y Soluciones Relacionadas

Windows Apps Juegos
WordPress

Cómo Solucionar el Error Demasiadas Redirecciones en WordPress Definitivamente

¿Tu sitio web muestra un error de bucle de redireccionamiento infinito? Descubre las causas principales y cómo solucionarlo fácilmente.

Leer guía completa →
Windows

Cómo Solucionar el Error DNS_PROBE_FINISHED_NXDOMAIN en Windows de Forma Definitiva

¿No puedes navegar por internet y aparece el mensaje DNS_PROBE_FINISHED_NXDOMAIN? Aprende a solucionarlo en pocos minutos con este tutorial definitivo para Windows.

Leer guía completa →
Desarrollo

Cómo Solucionar el Error fatal: refusing to merge unrelated histories en Git

Si al intentar hacer un pull o merge en Git te encuentras con este error, significa que tus repositorios no comparten un historial común. Aquí te enseñamos cómo unificarlos de forma segura paso a paso.

Leer guía completa →