lsof -p pid获取的是当前pid进程文件句柄数
通过 lsof 查看当前pid线程句柄数
lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
相差很大,再分析lsof其他字段,最终发现问题所在,tid字段,线程字段,通过线程重新统计发现:
统计3370 pid下所有tid线程出现的次数发现:
lsof |grep 3370 |awk '{print $3}'|sort|uniq -c |sort -nr|more > 3370.log
第一列是出现次数,第二列是线程id
每个线程出现次数几乎一模一样,导致这个结果是因为进程持有资源,线程基本不持有资源,共享进程所持有的资源,导致lsof获取到的句柄数特别大,其实线程是使用了共享资源导致,下图是线程共享与独享示例:
线程共享 | 线程独享 |
---|---|
地址空间 | 程序计数器 |
全局变量 | 寄存器 |
打开的文件 | 栈 |
子进程 | 状态字 |
闹钟 | |
信号及信号服务成勋 | |
记账信息 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。