Me encuentro con un problema de repente; Todas mis aplicaciones y el servidor funcionaban bien y, de repente, veo que se dispara la cantidad de archivos abiertos.
Lo estoy comprobando con este comando:
cat /proc/sys/fs/file-nr
Cuando 44544 0 128000
verifico esto, se muestra , entonces 44544 es el número de archivos abiertos.
Pero cuando lsof | wc -l
verifico con este comando, muestra 28384.
¿Y cuál es la correcta?
Mi límite máximo de archivos abiertos es 65535
ulimit -a
open files (-n) 65535
Quiero conocer los 5 procesos principales que utilizan más archivos abiertos. Puedo obtener esto, lsof
pero el conteo que se muestra aquí es muy diferente del otro comando que mencioné anteriormente.
¿Puedo obtener los detalles de los procesos contados por este comando cat /proc/sys/fs/file-nr
?
De acuerdo con el enlace mencionado a continuación, dice que no podemos, Cómo mostrar descriptores de archivos abiertos pero sin usar el comando lsof
¿Hay alguna solución para mí? Necesito encontrar qué proceso comenzó a usar más archivos abiertos de repente.
ACTUALIZACIÓN Perdón chicos por el problema. Encontré el error que estaba cometiendo, NO estaba comprobando lsof | wc -l desde la raíz. Esa es la razón por la que estaba viendo una gran diferencia.
todavía hay una diferencia entre la salida del archivo -nr y lsof | wc -l (desde la raíz). lsof count es más que file -nr count. La razón de esto es que file -nr ignora algunos de los directorios (que son considerados como archivos por lsof). Encontré esta razón por una pequeña investigación en Google. de todos modos! ¡Gracias chicos por toda la ayuda!
fuente
lsof | wc -l
Realmente muestra un número negativo?Respuestas:
Parece que hay dos preguntas en juego aquí. Primero, puede encontrar documentación completa de las estructuras file-nr y file-max en
https://www.kernel.org/doc/Documentation/sysctl/fs.txt
Esto define los campos en ese archivo como:
Esperemos que sea lo suficientemente claro. La segunda pregunta ha sido respondida en el hilo mencionado anteriormente ( /server/485262/number-of-file-descriptors-different-between-proc-sys-fs-file-nr-and-proc- pi ) y parece delegar a cualquiera
La dificultad de obtener métricas precisas para esto es significativa, ya que el número de FD en uso en cualquier punto dado puede fluctuar muy rápidamente en un sistema.
El siguiente hilo sugiere un esquema de filtrado para el enfoque 'lsof':
/server/396872/why-or-how-does-the-number-of-open-file-descriptors-in-use-by-root-exceed-ulim
fuente
ulimit
para mí dice que puedo tener abiertos hasta 1024 archivos, silsof | wc -l
dice que ya tengo 1545?lsof
yulimit
para obtener la respuesta a su pregunta.