J'exécute lsof dans l'un de mes serveurs Linux pour vérifier si un fichier ( /tmp/incoming_data.txt
) du système ext3 est ouvert par d'autres programmes. Mon serveur a beaucoup de connexion TCP dessus. Ce qui est étrange, c'est que l'exécution de 'sudo lsof' prend environ deux minutes et qu'il utilise 99.x% CPU pendant ces deux minutes.
La commande que j'ai utilisée est sudo lsof /tmp/incoming_data.txt
. J'ai essayé " fuser " qui prend à peu près la même quantité de CPU et de temps d'exécution. Puis-je faire quelque chose pour résoudre ce problème?
lsof
montre-t-on? Combien de processus et de threads ce fichier a-t-il ouvert? Quelle est la charge du processeur lorsque vous n'exécutez pas lsof?Réponses:
Si vous êtes certain de pouvoir ignorer les connexions TCP ou UDP ouvertes, puisque vous en avez mentionné qu'elles sont trop nombreuses, vous pouvez utiliser l'option spécifique au dialecte de lsof
-X
.Lisez la page de manuel de lsof et recherchez '-X' pour des informations détaillées.
la source
Passez l'
-n
option pour ignorer la résolution des noms DNS des connexions IP. Ce sera certainement la partie la plus importante de tout ralentissement.la source
J'ai trouvé ce petit paquet NPM qui accélère merveilleusement lsof pour les fichiers: https://www.npmjs.com/package/lsof-mac-fast .
J'ai créé un script wrapper pour l'utiliser:
Voici mon script:
L'intervalle de répétition peut être très faible, par exemple 10 ms semble fonctionner correctement.
la source