Por que os arquivos file-nr e lsof nos arquivos abertos são diferentes? [fechadas]

18

Estou com um problema de repente; todos os meus aplicativos e o servidor estava funcionando bem e, de repente, vejo o número de arquivos abertos disparados.

Estou verificando com este comando:

cat /proc/sys/fs/file-nr

Quando eu verifico com isso, mostra 44544 0 128000 , então 44544 é o número de arquivos abertos.

Mas quando eu verifico com este comando - lsof | wc -l mostra - 28384.

Então qual é a correta?

Meu limite máximo de arquivos abertos é 65535

ulimit -a
open files                      (-n) 65535

Eu quero conhecer os 5 principais processos que estão usando mais arquivos abertos. Eu posso obter isso de lsof , mas a contagem mostrada aqui é muito diferente do outro comando que mencionei acima.

Posso obter os detalhes dos processos contados por este comando cat /proc/sys/fs/file-nr ?

De acordo com o link abaixo mencionado diz que não podemos, Como exibir descritores de arquivos abertos, mas não usando o comando lsof

Existe um trabalho para mim? Preciso descobrir qual processo começou a usar mais arquivos abertos de repente.

UPDATE Desculpe pessoal pelo problema. Eu encontrei o erro que eu estava cometendo Eu não estava verificando lsof | wc -l da raiz. essa é a razão pela qual eu estava vendo uma diferença enorme.

ainda existe uma diferença entre a saída do arquivo -nr e lsof | wc -l (da raiz). A contagem de lsof é maior que a contagem de arquivos -nr. A razão para isto é, o arquivo -nr ignora alguns dos diretórios (que são considerados como arquivos por lsof) eu encontrei este motivo por uma pequena pesquisa no próprio google. em todo o caso! Obrigado rapazes por toda a ajuda!

    
por Vasanth Nag K V 01.01.2015 / 21:49

1 resposta

7

Parece haver duas perguntas em jogo aqui. Primeiro, a documentação completa das estruturas file-nr e file-max pode ser encontrada em

link

Isso define os campos nesse arquivo como:

The three values in file-nr denote the number of allocated file handles, the number of allocated but unused file handles, and the maximum number of file handles. Linux 2.6 always reports 0 as the number of free file handles -- this is not an error, it just means that the number of allocated file handles exactly matches the number of used file handles.

Espero que seja claro o suficiente. A segunda questão foi respondida no tópico mencionado acima ( link ) e parece passar para

  1. "use lsof" e filtre a saída apropriadamente se você precisar obter uma boa aproximação dos descritores de arquivo em uso por um processo ou,
  2. percorre o sistema de arquivos / proc (e ainda precisa filtrar a saída) para obter um instantâneo no tempo do uso do descritor de arquivo.

A dificuldade de obter métricas precisas para isso é significativa, pois o número de FDs em uso em qualquer ponto pode flutuar muito rapidamente em um sistema.

O tópico a seguir sugere um esquema de filtragem para a abordagem 'lsof':

link

    
por 27.01.2015 / 18:37