h1

error «Too many open files»

17/07/2009

Si en una aplicación (aMule por ejemplo, o algunas bases de datos como Oracle) se produce este error:

ERROR salvando archivo part: Failed to open part.met file (681.part.met ==> Fotos.tar.gz)
2009-07-16 14:14:05: Error: can't open file '/home/carlos/temporales_amule/489.part.met' (error 24: Too many open files)
2009-07-16 14:14:05: CFile: Error when opening file (/home/carlos/temporales_amule/489.part.met): Too many open files

éste es debido a la apertura simultánea de más descriptores de fichero de los permitidos por el sistema operativo. Se puede ver facilmente con el siguiente comando:

carlos@shirley:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

Para ello, o se corrige la aplicación para que no abra tantos ficheros al mismo o se cambia la configuración del sistema operativo para aumentar el límite. En este último caso, en GNU/Linux Kubuntu sería editando el fichero /etc/security/limits.conf

carlos@WhenIGrowUp:~$ sudo nano /etc/security/limits.conf
[sudo] password for carlos:

Añadir al final del fichero las siguientes lineas:

[...]
carlos soft nofile 30000
carlos hard nofile 30000

[...]

Sustituyendo logicamente «carlos» por el nombre del usuario que ejecuta la aplicación. Puede ser necesario reiniciar la sesión de ese usuario. Para comprobar que el cambio se ha aplicado correctamente, ejecutar el comando ulimit de nuevo:

carlos@shirley:~$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 20
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 30000
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

One comment

  1. It’s always a pleasure to hear from someone with expertise.



Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: