En entornos de producción, es habitual que aplicaciones como servidores web, bases de datos o sistemas de monitorización requieran un número elevado de descriptores de archivos abiertos. En Linux, este límite se controla con el parámetro ulimit -n
.
En contenedores LXC gestionados por Proxmox VE, este valor está condicionado por dos factores:
- La configuración del host Proxmox.
- La configuración interna del sistema operativo del contenedor.
En este artículo se describe cómo aumentar de forma persistente el límite de archivos abiertos en un contenedor LXC con Debian 13.
1. Configuración del límite en el host Proxmox
El primer paso es definir el límite máximo que el contenedor puede alcanzar. Esto se realiza editando el archivo de configuración del LXC en el host.
- Localizar el archivo de configuración del contenedor:
/etc/pve/lxc/ID.conf
SustituirID
por el identificador del contenedor (por ejemplo,101
). - Editar el archivo y añadir o modificar la directiva:
lxc.prlimit.nofile: 65535
Este parámetro define el número máximo de descriptores de archivos que el contenedor puede manejar.
El valor65535
es un ejemplo habitual en entornos de alto rendimiento. - Reiniciar el contenedor para aplicar los cambios:
pct restart ID
2. Configuración dentro del contenedor Debian 13
Una vez que el host permite el nuevo límite, es necesario configurar el sistema interno del contenedor para que utilice dicho valor.
2.1. Ajustar /etc/security/limits.conf
Editar el archivo:
nano /etc/security/limits.conf
Añadir:
* soft nofile 65535
* hard nofile 65535
soft
: Límite que el sistema aplica por defecto a los procesos.hard
: Límite máximo que se puede establecer para un usuario o proceso.
2.2. Habilitar la carga de límites con PAM
En Debian, PAM (Pluggable Authentication Modules) gestiona los límites de recursos.
Asegúrese de que se cargue el módulo pam_limits.so
en:
nano /etc/pam.d/common-session
nano /etc/pam.d/common-session-noninteractive
Añadir (si no existe):
session required pam_limits.so
2.3. Ajustar límites globales de systemd
En sistemas con systemd
, es recomendable definir el límite global:
- Crear directorio de configuración:
mkdir -p /etc/systemd/system.conf.d
- Crear archivo de configuración:
nano /etc/systemd/system.conf.d/nofile.conf
Con el contenido:[Manager] DefaultLimitNOFILE=65535
2.4. Ajustar límites por servicio
Algunos servicios gestionados por systemd
requieren configurar el límite directamente en su unidad.
Por ejemplo, para Nginx:
systemctl edit nginx
Añadir:
[Service]
LimitNOFILE=65535
Recargar systemd
:
systemctl daemon-reexec
3. Verificación
3.1. Verificar límite en sesión
Dentro del contenedor:
ulimit -n
Debe mostrar:
65535
3.2. Verificar límite en un servicio
Por ejemplo, para Nginx:
systemctl show nginx -p LimitNOFILE
Salida esperada:
LimitNOFILE=65535
4. Consideraciones importantes
- Si no se establece
lxc.prlimit.nofile
en el host Proxmox, los cambios dentro del contenedor no tendrán efecto, aunque se modifiquen archivos comolimits.conf
. - No es recomendable establecer valores extremadamente altos sin conocer el impacto en el rendimiento y en el consumo de memoria del sistema.
- Algunos procesos pueden requerir reinicio completo del contenedor para aplicar los cambios.
Conclusión
El ajuste de ulimit -n
en contenedores LXC requiere coordinación entre la configuración del host Proxmox y la del propio contenedor Debian. Siguiendo estos pasos, es posible aumentar de forma persistente el límite de archivos abiertos y garantizar que las aplicaciones críticas dispongan de los recursos necesarios para operar sin restricciones innecesarias.
Compartir: