ccl*_*ark 12 lsof max-file-descriptors
我有一个正在泄漏文件描述符的 Java 进程(Glassfish)。我知道这一点,因为我得到了有用的java.io.IOException: Too many open files例外。我可以/proc/PID#/fd查看所有打开的文件描述符。当我使用 lsof 时,我得到了大量这样的条目:
java 18510 root 8811u sock 0,4 1576079 无法识别协议
java 18510 root 8812u sock 0,4 1576111 无法识别协议
java 18510 root 8813u sock 0,4 1576150 无法识别协议
我看到每分钟创建 12 个新的。我可以在 lsof 上使用哪些选项或我可以使用哪些其他工具来帮助跟踪无法识别协议的套接字文件描述符?
小智 7
使用进程查看前 20 个文件句柄:
for x in `ps -eF| awk '{ print $2 }'`;do echo `ls /proc/$x/fd 2> /dev/null | wc -l` $x `cat /proc/$x/cmdline 2> /dev/null`;done | sort -n -r | head -n 20
Run Code Online (Sandbox Code Playgroud)
输出格式为 file handle count, pid, cmndline for process
示例输出
701 1216 /sbin/rsyslogd-n-c5
169 11835 postgres: spaceuser spaceschema [local] idle
164 13621 postgres: spaceuser spaceschema [local] idle
161 13622 postgres: spaceuser spaceschema [local] idle
161 13618 postgres: spaceuser spaceschema [local] idle
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28713 次 |
| 最近记录: |