[opensuse-es] Obtener número de archivos abiertos por usuario
Hola a tod@s: Quisiera obtener el número de archivos abiertos por usuario en un servidor, para lo cual he usado el siguiente comando: [root@testserver ~]#lsof | grep username | wc -l 4719 No entiendo por qué muestra esa cifra, si teniendo en cuenta la salida de éste comando: [root@testserver ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 32764 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 4096 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 32764 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited El máximo de archivos abiertos que se permite por usuario es de 4096. ¿ Qué estoy haciendo/interpretando mal ? Quedo atento a sus comentarios/indicaciones/sugerencias. Cordialmente, Cuervo Linuxero -- No recibo/envío información elaborados en/para M$-Word, M$-Excel, M$-PowerPoint, M$-Outlook o formatos privativos similares. Le invito a leer mis razones: http://www.gnu.org/philosophy/no-word-attachments.es.html -- 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
On 09/07/2010 0:29, RŌNIN wrote:
Hola a tod@s:
Quisiera obtener el número de archivos abiertos por usuario en un servidor, para lo cual he usado el siguiente comando:
[root@testserver ~]#lsof | grep username | wc -l 4719
No entiendo por qué muestra esa cifra, si teniendo en cuenta la salida de éste comando:
[root@testserver ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 32764 max locked memory (kbytes, -l) 32 max memory size (kbytes, -m) unlimited open files (-n) 4096 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 32764 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
El máximo de archivos abiertos que se permite por usuario es de 4096.
¿ Qué estoy haciendo/interpretando mal ?
Has buscado "username" por lo que te muestra todos los usuarios. Es decir, si tienes 2 usuarios ... ya sobrepasas los 4096. En vez del grep username, pon grep <usuario> y te mostrará los que tiene ese usuario determinado. O, simplemente quita el: | wc -l y verás los usuarios que salen. HTH Rafa -- "We cannot treat computers as Humans. Computers need love." Happily using KDE 4.4.4 :) -- 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
El Fri, 09 Jul 2010 08:39:42 +0200, Rafa Griman escribió:
On 09/07/2010 0:29, RŌNIN wrote:
Quisiera obtener el número de archivos abiertos por usuario en un servidor, para lo cual he usado el siguiente comando:
[root@testserver ~]#lsof | grep username | wc -l 4719
No entiendo por qué muestra esa cifra, si teniendo en cuenta la salida de éste comando:
[root@testserver ~]# ulimit -a
(...)
El máximo de archivos abiertos que se permite por usuario es de 4096.
¿ Qué estoy haciendo/interpretando mal ?
Has buscado "username" por lo que te muestra todos los usuarios. Es decir, si tienes 2 usuarios ... ya sobrepasas los 4096.
En vez del grep username, pon grep <usuario> y te mostrará los que tiene ese usuario determinado. O, simplemente quita el:
| wc -l
y verás los usuarios que salen.
Me pasa igual: sm01@stt008:~$ whoami sm01 sm01@stt008:~$ lsof -u sm01 | wc -l 3678 sm01@stt008:~$ ulimit -a | grep open open files (-n) 1024 Quizá midan o tengan en cuenta valores distintos. Saludos, -- Camaleón -- 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
Hola :) On 09/07/2010 10:02, Camaleón wrote:
El Fri, 09 Jul 2010 08:39:42 +0200, Rafa Griman escribió:
On 09/07/2010 0:29, RŌNIN wrote:
Quisiera obtener el número de archivos abiertos por usuario en un servidor, para lo cual he usado el siguiente comando:
[root@testserver ~]#lsof | grep username | wc -l 4719
No entiendo por qué muestra esa cifra, si teniendo en cuenta la salida de éste comando:
[root@testserver ~]# ulimit -a
(...)
El máximo de archivos abiertos que se permite por usuario es de 4096.
¿ Qué estoy haciendo/interpretando mal ?
Has buscado "username" por lo que te muestra todos los usuarios. Es decir, si tienes 2 usuarios ... ya sobrepasas los 4096.
En vez del grep username, pon grep<usuario> y te mostrará los que tiene ese usuario determinado. O, simplemente quita el:
| wc -l
y verás los usuarios que salen.
Me pasa igual:
sm01@stt008:~$ whoami sm01
sm01@stt008:~$ lsof -u sm01 | wc -l 3678
sm01@stt008:~$ ulimit -a | grep open open files (-n) 1024
Quizá midan o tengan en cuenta valores distintos.
Saludos,
No tengo un Linux a mano para verlo y en cygwin me dice que no hay lsof :( Lo que se me ocurre es que sea por shell (ulimit) y que lsof es por sistema. Es decir, ulimit te esté limitando a nivel de shell, por lo que si tienes 2 shells ... puedes tener el doble de ficheros abiertos. Como no tengo un Linux a mano, no puedo probarlo y todo lo que digo es de memoria :( 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
El Fri, 09 Jul 2010 10:46:51 +0200, Rafa Griman escribió:
On 09/07/2010 10:02, Camaleón wrote:
(...)
Quizá midan o tengan en cuenta valores distintos.
Saludos,
No tengo un Linux a mano para verlo y en cygwin me dice que no hay lsof :(
Lo que se me ocurre es que sea por shell (ulimit) y que lsof es por sistema. Es decir, ulimit te esté limitando a nivel de shell, por lo que si tienes 2 shells ... puedes tener el doble de ficheros abiertos.
Como no tengo un Linux a mano, no puedo probarlo y todo lo que digo es de memoria :(
Por aquí comentan algo: *** "lsof -u user | wc -l" shows more entries then "ulimit -n" http://groups.google.com/group/linuxusersgroup/browse_thread/thread/730a618680939816/84892024d49ec8ac?lnk=gst&q=lsof#84892024d49ec8ac *** Dicen que los límites de "ulimit -n" son aplicables a cada proceso, no sé si eso es a lo que te referías :-) Saludos, -- Camaleón -- 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
Hola a tod@s: El día 9 de julio de 2010 10:32, Camaleón escribió:
Por aquí comentan algo:
*** "lsof -u user | wc -l" shows more entries then "ulimit -n" http://groups.google.com/group/linuxusersgroup/browse_thread/thread/730a618680939816/84892024d49ec8ac?lnk=gst&q=lsof#84892024d49ec8ac ***
Dicen que los límites de "ulimit -n" son aplicables a cada proceso, no sé si eso es a lo que te referías :-)
Saludos,
-- Camaleón
Ahora sí me perdí ... ¿ eso quiere decir que el dato de lsof está correcto ?. Y si quiero conocer/limitar la cantidad de archivos abiertos por usuario (no por proceso), ¿ eso no se establece en /etc/security/limits.conf ? Cordialmente, Cuervo Linuxero -- No recibo/envío información elaborados en/para M$-Word, M$-Excel, M$-PowerPoint, M$-Outlook o formatos privativos similares. Le invito a leer mis razones: http://www.gnu.org/philosophy/no-word-attachments.es.html -- 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
El día 9 de julio de 2010 10:32, Camaleón escribió:
Por aquí comentan algo:
*** "lsof -u user | wc -l" shows more entries then "ulimit -n" http://groups.google.com/group/linuxusersgroup/browse_thread/
El Fri, 09 Jul 2010 11:40:17 -0500, RŌNIN escribió: thread/730a618680939816/84892024d49ec8ac?lnk=gst&q=lsof#84892024d49ec8ac
***
Dicen que los límites de "ulimit -n" son aplicables a cada proceso, no sé si eso es a lo que te referías :-)
Ahora sí me perdí ... ¿ eso quiere decir que el dato de lsof está correcto ?.
Creo que sí. La diferencia (según entiendo) está en que "lsof" te devuelve el valor de los archivos que tiene abiertos el usuario y que pueden ser archivos comunes, directorios, recursos de red, etc... Pero el comando "ulimit -n" lo que muestra/define es el valor de los "descriptores de archivo" (file descriptors) que -entiendo- no son equivalentes, es decir, que puede existir un conteo para un "archivo abierto" pero éste no tener un "descriptor de archivo" asociado y por tanto los valores que devuelven ambos son tan dispares.
Y si quiero conocer/limitar la cantidad de archivos abiertos por usuario (no por proceso), ¿ eso no se establece en /etc/security/limits.conf ?
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? Saludos, -- Camaleón -- 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
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 ?. 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. 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. Cordialmente, Cuervo Linuxero -- No recibo/envío información elaborados en/para M$-Word, M$-Excel, M$-PowerPoint, M$-Outlook o formatos privativos similares. Le invito a leer mis razones: http://www.gnu.org/philosophy/no-word-attachments.es.html -- 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
El Fri, 09 Jul 2010 14:27:39 -0500, RŌNIN escribió:
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 ?.
Pues como lo has hecho antes, con "ulimit -a" ejecutado desde el usuario en cuestión. Entiendo que prevalece el valor global si no has definido ningún otro valor para el usuario.
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.
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.
A ver si te sirve este artículo (no sé es si será válido para openSUSE): *** Linux Increase The Maximum Number Of Open Files / File Descriptors (FD) http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files... *** Saludos, -- Camaleón -- 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
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
participants (4)
-
Camaleón
-
Rafa Griman
-
Rafa Grimán
-
RŌNIN