• Feed RSS
0

Java lanza la excepción java.net.SocketException: Too many open files cuando el sistema detecta que el proceso java supera el número de descriptores de ficheros (fd) abiertos. Este número máximo se puede definir a nivel de sistema o de shell.
Nivel de sistema
Para conocer el número máximo de fd en el sistema teclee en consola:
$> cat /proc/sys/fs/file-max
En mi caso devolvió el valor de 65536, según he leido este número puede incrementarse hasta el valor de 200000. Si se necesita cambiar este valor añadir en el fichero /etc/sysctl.conf.
fs.file-max = 200000
Nivel de Shell 
Para conocer el número máximo de fd en shell teclee en consola:
ulimit -n
El valor devuelto fue 1024, valor razonable pero también se puede cambiar. Para ello se tiene que añadir
* soft nofile 2048
* hard nofile 2048
En el fichero /etc/security/limits.conf.

Nota:
Para averiguar el número de descriptores abiertos por un proceso (xxx) escribir en consola:
lsof -p xxx |wc -l