我们运行一个Apache Cassandra集群,其中每个主机在任何给定时间都有数十万打开的文件。
我们希望能够定期获取打开文件的数量并将其输入到石墨中,但是当我们lsof
在collectd
Windows XP 下运行时,它需要花费几分钟才能完成,并消耗大量CPU。 。
我想知道是否还有另一种更友好的方法来获取lsof提供的相同数据,或者甚至是一种运行lsof的方式而不会明显占用CPU?(尽管我认为后一种方法可能需要比目前完成的时间长得多……不理想)。
也许内核在包含打开文件数量的某个地方维护了一些变量?妄想?
更新:
为了回答其中一个问题,我们已经在使用-b
and -n
标志。这是我在以下命令下运行的完整命令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':没有这样的文件或目录-问@Benoît我该如何避免呢?