fd泄漏 or socket相关问题分析命令总结
31 Mar 2020
|
|
fd数目有没有上涨?
lsof -n|awk '{print $2}'| sort | uniq -c | sort -nr | head
20个最高fd线程
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
具体到进程
ll /proc/pid/fd | wc -l
fd都用来干啥了
strace -p pid -f -e read,write,close
Ref
- https://oroboro.com/file-handle-leaks-server/ 一个fd泄漏总结
- 大众错误观点
- time-wait太多导致fd占用 -> 不会。close就可以复用了。和time-wait两回事
- close fd太慢 -> 不会。调用close返回值后就可以复用,是否真正关闭是系统的事儿
- 几个常见场景
- 子进程导致的重复fd
- 太多连接
- 创建子进程的时候关闭fd泄漏
- 大众错误观点
- https://serverfault.com/questions/135742/how-to-track-down-a-file-descriptor-leak
- 查看所有tcphttp://blog.fatedier.com/2016/07/18/stat-all-connection-info-of-special-process-in-linux/