Hola :) On Friday 09 July 2010 21:27 RŌNIN wrote
Hola a tod@s:
El d�a 9 de julio de 2010 12:57, Camale�n escribi�:
Supongo que s�, pero ten en cuenta que eso controla el valor de los "descriptores de archivo" no de los "archivos abiertos" O:-)
Y a todo esto... �por qu� quieres modificar ese valor?
Aqu� me surge otra duda: � c�mo puedo obtener el n�mero de descriptores de archivo por usuario ?.
lsof. La cosa es que lsof te muestra, además, ficheros abiertos que no usan un FD, como puede ser una librería. lsof muestra TODOS los ficheros abiertos, tengan o no un FD. Un file descriptor no es más que un número (entero) que devuelve el kernel cuando un proceso abre un fichero, dicho entero identifica al fichero abierto. Cada fichero abierto tiene un file descriptor asociado. Otra manera es con /proc/sys/: # cat /proc/sys/fs/file-nr Verás tres números: # cat /proc/sys/fs/file-nr 21312 0 792051 El primero es el número de FD utilizados y el tercero es el máximo número de FD que permite tu kernel. Por ejemplo, ahora en mi equipo, tengo esto (6240 es el PID del konqueror que tengo corriendo): lsof | grep 6240 | wc -l 197 Supuestamente, tengo 197 ficheros abiertos. Si vamos a: ls -l /proc/6240/fd/ vemos esto otro: total 0 dr-x------ 2 rgriman users 0 jul 10 21:23 . dr-xr-xr-x 7 rgriman users 0 jul 10 21:15 .. lr-x------ 1 rgriman users 64 jul 10 21:23 0 -> pipe:[9726] l-wx------ 1 rgriman users 64 jul 10 21:23 1 -> /home/rgriman/.xsession-errors lrwx------ 1 rgriman users 64 jul 10 21:23 10 -> /tmp/kde-rgriman/konqueror- crash-ZT6240.log lr-x------ 1 rgriman users 64 jul 10 21:23 11 -> /var/tmp/kdecache- rgriman/ksycoca4 lr-x------ 1 rgriman users 64 jul 10 21:23 16 -> anon_inode:inotify l-wx------ 1 rgriman users 64 jul 10 21:23 2 -> /home/rgriman/.xsession-errors lr-x------ 1 rgriman users 64 jul 10 21:23 3 -> pipe:[1133448] l-wx------ 1 rgriman users 64 jul 10 21:23 35 -> pipe:[1154404] l-wx------ 1 rgriman users 64 jul 10 21:23 4 -> pipe:[1133448] lr-x------ 1 rgriman users 64 jul 10 21:23 42 -> pipe:[1154408] l-wx------ 1 rgriman users 64 jul 10 21:23 43 -> pipe:[1154408] lr-x------ 1 rgriman users 64 jul 10 21:23 44 -> pipe:[1154419] l-wx------ 1 rgriman users 64 jul 10 21:23 45 -> pipe:[1154419] lr-x------ 1 rgriman users 64 jul 10 21:23 5 -> pipe:[1133450] l-wx------ 1 rgriman users 64 jul 10 21:23 6 -> pipe:[1133450] lrwx------ 1 rgriman users 64 jul 10 21:23 7 -> socket:[1133456] lrwx------ 1 rgriman users 64 jul 10 21:23 8 -> socket:[1133477] lrwx------ 1 rgriman users 64 jul 10 21:23 9 -> socket:[1133498] Es decir, 17 FD.
Tengo un cuello de botella en un par de servidores que cuentan con instancias de Jboss y hasta donde he intentado analizar el tema, tal vez se necesiten ajustes en los valores de archivos abiertos o de descriptores de archivos.
Si no quieres complicarte la vida: mete más RAM. Para Java, cuanta más RAM tengas, mejor ;) Si no quieres/puedes ampliar RAM, puedes jugar con: #cat /proc/sys/fs/file-max Para ampliarlo, puedes teclear algo como: # echo "792051" > /proc/sys/fs/file-max El número que pones entre comillas es el # de ficheros que quieres llegar a tener abierto. Recuerda que eso lo tendrás que hacer cada vez que reinicias, por lo que tienes: /etc/sysctl.conf donde puedes poner algo como: # Maximum number of open files permited fs.file-max = 792051 y luego: sysctl -p /etc/sysctl.conf
Pero primero debo saber cu�les son los valores actuales y me gustar�a saber c�mo cambiarlos en determinados casos. Ah� es donde me encuentro atascado.
ulimit afecta a una sesión/shell, luego si tienes un mismo usuario haciendo 2 ssh a un servidor o tiene dos terminales abiertas, tienes dos sesiones por lo que lsof te podrá mostrar el doble de lo que tienes definido en ulimit. Resumiendo: - ulimit controla UNA (1) shell. NO controla el sistema entero. - lsof muestra los ficheros abiertos (de ahí el nombre) del SISTEMA ENTERO - /proc/sys/* y /etc/sysctl.conf controlan el SISTEMA ENTERO HTH Rafa -- "We cannot treat computers as Humans. Computers need love." Happily using KDE 4.4.5 :) -- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org