Estou executando o lsof em um dos meus servidores Linux para verificar se um arquivo ( /tmp/incoming_data.txt
) no sistema ext3 está aberto por outros programas. Meu servidor possui muita conexão TCP. O estranho é que a execução do 'sudo lsof' leva cerca de dois minutos para terminar e usa 99.x% da CPU durante esses dois minutos.
O comando que eu usei é sudo lsof /tmp/incoming_data.txt
. Eu tentei " fusor ", que leva aproximadamente a mesma quantidade de CPU e tempo de execução. Há algo que eu possa fazer para corrigir esse problema?
lsof
mostra? Quantos processos e threads esse arquivo está aberto? Qual é a carga da CPU quando não está executando o lsof?Respostas:
Se você tiver certeza de que pode ignorar as conexões TCP ou UDP abertas, como mencionou que há muitas delas, poderá usar a opção específica de dialeto de lsof
-X
.Leia a página de manual de lsof e procure por '-X' para obter informações detalhadas.
fonte
Passe a
-n
opção para ignorar a resolução de nomes DNS de conexões IP. Esta quase certamente será a maior parte de qualquer desaceleração.fonte
Encontrei este pequeno pacote NPM, que faz um trabalho maravilhoso em acelerar o lsof para arquivos: https://www.npmjs.com/package/lsof-mac-fast .
Eu criei um script de wrapper para usá-lo:
Este é o meu script:
O intervalo de repetição pode ser muito baixo, por exemplo, 10 ms parece funcionar bem.
fonte