Her ana makinenin herhangi bir zamanda birkaç yüz bin dosyanın açık olduğu bir Apache Cassandra kümesi çalıştırıyoruz .
Periyodik aralıklarla bir dizi açık dosya almak ve bu sayıyı grafite beslemek istiyoruz , ancak lsof
altında collectd
koştuğumuzda, bu arada olağanüstü miktarda CPU'yu tamamlamak ve çiğnemek birkaç dakika sürüyor .
Ben lsof sağladığı aynı verileri elde etmek için alternatif ve daha kolay bir yol, ya da hatta farkedilir derecede CPU yemek olmaz lsof çalıştırmak için bir yol olup olmadığını merak ediyorum? (Her ne kadar bu ikinci yöntemin tamamlanması şu anda olduğundan çok daha uzun süreceğini varsaysam da ... ideal değil).
Belki de çekirdek, açık dosya sayısını içeren bir yerde bazı değişkenleri korur? Hüsn-ü kuruntu?
Güncelleme:
Yanıtlardan birine yanıt olarak, -b
ve -n
bayraklarını zaten kullanıyoruz . İşte tam komut altında çalışan var collectd
:
sudo lsof -b -n -w | stdbuf -i0 -o0 -e0 wc -l
/proc/{{number}}/fd/5': No such file or directory find:
/ proc / {{number}} / fdinfo / 5 ': Böyle bir dosya veya dizin yok - Q @ Benoît Bunu nasıl önleyebilirim?