linux – 非cpu密集型替代lsof?
发布时间:2020-12-13 18:01:01 所属栏目:Linux 来源:网络整理
导读:我们运行一个 Apache Cassandra集群,每个主机在任何给定时间都有几十万个文件打开. 我们希望能够定期获取打开文件的数量并将此数字输入graphite,但是当我们在 collectd 下运行lsof时,它最终需要几分钟才能完成,并且会占用过多的CPU.与此同时. 我想知道是否有
我们运行一个
Apache Cassandra集群,每个主机在任何给定时间都有几十万个文件打开.
我们希望能够定期获取打开文件的数量并将此数字输入graphite,但是当我们在 我想知道是否有一种替代和更友好的方法来获取lsof提供的相同数据,甚至是一种运行lsof的方式,它不会明显地进入CPU? (虽然我认为后一种方法可能需要比现在更长的时间来完成…不理想). 也许内核在某个地方维护一些包含打开文件数量的变量?妄想? 更新: 响应其中一个答案,我们已经使用了-b和-n标志.这是完整的命令,因为我在collectd下运行它: sudo lsof -b -n -w | stdbuf -i0 -o0 -e0 wc -l 解决方法
您可能不需要解析套接字的网络地址,因此至少使用-n开关.
那么你可能也想要使用-b跳过阻塞操作. 这两个第一个开关应该真的让它更快. 然后-l以避免解决uid.和-L以避免计算链接.等等.见man lsof. 或者,使用Linux,您可以创建一个脚本来简单地计算/ proc /< PID> / fd下的链接,如下所示: find / proc -mindepth 3 -maxdepth 3-type l | awk -F /’$4 ==“fd”{s} END {print s}’ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |