Demasiados archivos abiertos
Cada proceso en Linux se ejecuta con ciertos límites. Uno de estos límites es la cantidad de archivos y sockets de red que un proceso puede abrir al mismo tiempo. Cuando el límite es demasiado bajo, puedes ver el error Too many open files.
Astra y los límites de archivos abiertos
Sección titulada «Astra y los límites de archivos abiertos»En Astra, este error puede aparecer cuando el límite del sistema no está configurado lo suficientemente alto. Por defecto, si instalaste Astra con el comando astra init (como se describe en nuestra guía de inicio rápido), el límite se establece en 65536 archivos abiertos. Este valor suele ser suficiente para la mayoría de los casos.
Si inicias Astra de otra manera, debes asegurarte de que el límite de archivos abiertos esté configurado correctamente. A continuación se muestran los casos más comunes.
Iniciando con init.d
Sección titulada «Iniciando con init.d»Cuando usas un script init.d, debes aumentar el límite antes de iniciar Astra. Agrega la línea ulimit -n 65536 antes del comando que lanza Astra.
Ejemplo de script:
if [ "$1" = "start" ]; then /usr/bin/astra -c /etc/astra/astra.conf -p 8000 --pid /var/run/astra.pid --log /var/log/astra.log --daemonelif [ "$1" = "stop" ]; then if [ -f /var/run/astra.pid ]; then kill $(cat /var/run/astra.pid) fielif [ "$1" = "restart" ]; then $0 stop sleep 1 $0 startfiIniciando con systemd
Sección titulada «Iniciando con systemd»Para servicios systemd, debes establecer el límite dentro del archivo de servicio. En la sección [Service], agrega:
[Service]Type=simpleLimitNOFILE=65536ExecStart=/usr/bin/astra -c /etc/astra/astra.conf -p 8000 --log /var/log/astra.log --no-stdoutEsto asegura que Astra pueda abrir suficientes archivos y sockets sin que aparezca el error.
Verificando el límite actual
Sección titulada «Verificando el límite actual»Puedes comprobar el límite actual de archivos abiertos para un proceso en ejecución usando los comandos ulimit o cat.
Si estás dentro de la misma terminal donde se ejecuta Astra, ejecuta:
ulimit -nEsto muestra el número máximo de archivos abiertos para esa terminal (y cualquier proceso iniciado desde ella).
Si Astra ya se está ejecutando como un demonio, busca su ID de proceso (PID) y verifica directamente:
pidof astraEsto devuelve el PID del proceso Astra. Luego ejecuta:
cat /proc/<PID>/limits | grep "open files"Ejemplo de salida:
Max open files 65536 65536 files