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 a los que se enfrentan los administradores de sistemas y desarrolladores en entornos Linux es el error Too many open files (Demasiados archivos abiertos). Este fallo suele interrumpir la ejecución de servicios críticos como bases de datos, servidores web (Nginx o Apache) o aplicaciones Node.js, devolviendo un código de error del sistema operativo (habitualmente el número 24).

Causas Principales del Problema

Linux maneja prácticamente todo como si fuera un archivo: sockets de red, tuberías (pipes), directorios y archivos físicos. Por defecto, el sistema operativo impone límites estrictos en la cantidad de descriptores de archivos que un proceso o un usuario específico puede abrir simultáneamente para evitar ataques de denegación de servicio (DoS) y el consumo desmedido de memoria RAM. Las causas más comunes son:

  • Un servidor web con tráfico masivo que agota el límite por defecto del proceso.
  • Fugas de descriptores de archivos (file descriptor leaks) en aplicaciones mal programadas.
  • Límites globales o por usuario demasiado bajos configurados en el archivo limits.conf.

Método 1: Comprobar los límites actuales del sistema y del proceso

Antes de aplicar cualquier solución, es fundamental diagnosticar cuál es el límite actual y cuántos archivos se están utilizando. Sigue estos pasos:

  1. Abre tu terminal de Linux con privilegios de usuario o root.
  2. Ejecuta el siguiente comando para ver el límite actual de archivos abiertos para tu sesión: ulimit -n
  3. Para conocer el límite global a nivel de sistema operativo, ejecuta: cat /proc/sys/fs/file-max
  4. Si necesitas auditar cuántos archivos están abiertos en un momento dado por un proceso específico, utiliza: lsof -p [PID_DEL_PROCESO] | wc -l

Método 2: Aumentar permanentemente el límite con limits.conf

Para solucionar el error de forma definitiva en servicios y usuarios específicos, debemos modificar la configuración de PAM (Pluggable Authentication Modules). Sigue estos pasos detallados:

  1. Abre el archivo de configuración de límites con tu editor de texto favorito como root: sudo nano /etc/security/limits.conf
  2. Agrega las siguientes líneas al final del archivo para aumentar el límite (por ejemplo, a 65535) para un usuario específico o para todos: * soft nofile 65535 y * hard nofile 65535
  3. Guarda los cambios y cierra el editor (en nano, pulsa Ctrl + O, Enter y luego Ctrl + X).
  4. Asegúrate de que el módulo pam_limits.so esté habilitado en /etc/pam.d/common-session añadiendo la línea: session required pam_limits.so

Método 3: Ajustar los límites en servicios gestionados por Systemd

Si la aplicación que arroja el error se ejecuta como un servicio de Systemd (como MySQL, Nginx o un servicio personalizado), el archivo limits.conf podría ser ignorado. Debes configurar Systemd directamente:

  1. Crea un directorio de anulación para el servicio afectado: sudo systemctl edit nombre-servicio
  2. Dentro del archivo de configuración que se abrirá, añade las siguientes líneas bajo la sección [Service]: LimitNOFILE=65535
  3. Guarda el archivo y recarga el demonio de Systemd para aplicar los cambios: sudo systemctl daemon-reload
  4. Reinicia tu servicio para que tome los nuevos valores: sudo systemctl restart nombre-servicio
Anuncio
Seguir Leyendo

Guías y Soluciones Relacionadas

Windows Apps Juegos
Apps

Cómo Solucionar el Error de Bucle de Inicio de Sesión en Spotify Desktop de Forma Definitiva

¿Atrapado en un bucle infinito al intentar iniciar sesión en Spotify Desktop? Te mostramos los métodos definitivos para solucionarlo.

Leer guía completa →
Windows

Cómo Solucionar el Error DNS_PROBE_FINISHED_NXDOMAIN en Windows Definitivamente

Soluciona el molesto error DNS_PROBE_FINISHED_NXDOMAIN en tu PC con Windows aplicando estos métodos sencillos de red y configuración de DNS.

Leer guía completa →
Windows

Cómo Solucionar el Error 0x80070005 de Acceso Denegado en Windows 10 y 11

El error 0x80070005 interrumpe actualizaciones y permisos en Windows. Descubre cómo solucionarlo de forma definitiva con nuestra guía.

Leer guía completa →