广告 《大道至简,给所有人看的编程课》 🔥

《FreeSWITCH案例大全》

1.4 使用lsof查看freeswitch打开文件句柄数超高

moyan/2020-09

1.4.1 问题描述

使用网上流行的lsof -n|grep pid命令来查看打开的文件句柄数,得到结果如下:

lsof -n|grep 4847|wc -l
# 执行结果
134574

通过统计freeswitch进程(进程id:4847)占用的句柄数,达到134574

于是引发一系列联想, 这么高的句柄数,会不会引发什么问题,目前我的xx问题是不是由这么高的句柄数引起的。。。总之,这是一个杯具的开始。

1.4.2 问题解决

如果真要查看实际的句柄, 使用下面的命令来查找:

lsof -p 4847|wc -l

下面是具体的返回结果:

lsof -p 4847|wc -l
# 执行结果
1086

可以看出,真实使用的句柄总数也才1086,虚惊一场. 而为什么lsof -n|grep 4847返回的句柄数超高,直接贴一段引用:

使用lsof -n|grep xxx查看文件句柄数就是一个巨坑,慎重!

下面是作者 推荐的查看占用fd最多进程的方法:

find /proc -print | grep -P '/proc/\d+/fd/'| awk -F '/' '{print $3}' | uniq -c | sort -rn | head

1.4.3 参考资料

  1. [Linux] lsof的错误使用场景和查看打开文件数的正确方法
  2. lsof -p PID vs lsof | grep PID
  3. HOW TO - Use lsof to list open files used by the Apache Cassandra database


本书版权所有 © 杜金房及各位贡献者 2016-2023,仅供在线阅读,谢绝一切形式转载。 本书还在写作中,持续更新。 如果你也想写上几句,欢迎加入我们。 | 返回首页 |