专栏首页司夜的专栏句柄数lsof 和 lsof -p pid的区别
原创

句柄数lsof 和 lsof -p pid的区别

lsof -p pid获取的是当前pid进程文件句柄数

当前pid进程文件句柄数

通过 lsof 查看当前pid线程句柄数

lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more

查看当前pid线程句柄数

相差很大,再分析lsof其他字段,最终发现问题所在,tid字段,线程字段,通过线程重新统计发现:

统计3370 pid下所有tid线程出现的次数发现:

lsof |grep 3370 |awk '{print $3}'|sort|uniq -c |sort -nr|more > 3370.log

第一列是出现次数,第二列是线程id

第一列是出现次数,第二列是线程id

每个线程出现次数几乎一模一样,导致这个结果是因为进程持有资源,线程基本不持有资源,共享进程所持有的资源,导致lsof获取到的句柄数特别大,其实线程是使用了共享资源导致,下图是线程共享与独享示例:

线程共享

线程独享

地址空间

程序计数器

全局变量

寄存器

打开的文件

子进程

状态字

闹钟

信号及信号服务成勋

记账信息

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • “too many open files”的原理和解决方案

    “too many open files”这个错误大家经常会遇到,因为这个是Linux系统中常见的错误,也是云服务器中经常会出现的,而网上的大部分文章都是简单修...

    cutd
  • Linux下查看进程打开的文件句柄数

    在 Linux 平台上运行的进程都会从系统资源申请一定数量的句柄,而且系统控制了进程能够申请的最大句柄数量。用户程序如果不及时释放无用的句柄,将会引起句柄泄露,...

    九州暮云
  • 做 Java 或者 C++ 开发都应该知道的 lsof 命令

    lsof 命令是 Linux 系统的扩展工具,它的含义是 list opened filedesciptor (列出已经打开的文件描述符),在 Linux 系统...

    范蠡
  • 文件句柄与文件描述符

    1.概述 在实际工作中会经常遇到一些bug,有些就需要用到文件句柄,文件描述符等概念,比如报错: too many open files, 如果你对相关知识一无...

    用户1263954
  • linux 系统监控、诊断工具之 lsof 用法简介

    1、lsof 简介 lsof 是 linux 下的一个非常实用的系统级的监控、诊断工具。 它的意思是 List Open Files,很容易你就记住了它是 “...

    用户1177713
  • 如何查看linux中文件打开情况?

    我们都知道,在linux下,“一切皆文件”,因此有时候查看文件的打开情况,就显得格外重要,而这里有一个命令能够在这件事上很好的帮助我们-它就是lsof。

    编程珠玑
  • df和du显示不同

    Linux服务器,使用df -h查看文件系统使用率,可以看到/dev/xvdb1磁盘占用了约27G,挂载目录为/opt。

    陈不成i
  • 内存不足导致 nginx 崩溃的原因分析

    最近在 Centos7 上搭建 nginx 作为 web 服务器使用,但是使用过程中,nginx 总是莫名其妙的崩掉,使用命令 dmesg 检查错误信息如下:

    sylan215
  • 干货 | Tomcat类加载机制触发的Too many open files问题分析

    作者简介 宋顺,携程框架研发部技术专家。2016年初加入携程,主要负责中间件产品的相关研发工作。毕业于复旦大学软件工程系,曾就职于大众点评,担任后台系统技术负责...

    携程技术
  • 少年,了解lsof 命令吗?

    本文深入的学习命令lsof--列出打开文件(lists openfiles)。在linux系统中,我们可以通过文件访问文本数据,还可以访问网络连接和硬件。我们通...

    用户1278550
  • MySQL中查看InnoDB状态的一个小技巧

    MySQL中如果要查看InnoDB的状态,如果想看到更完整的信息,毫无疑问就是命令show engine innodb status。

    jeanron100
  • Linux lsof命令使用详解

    在 linux 系统中,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 lsof 命令不仅可以查看进程打开的文件、目录,还可以查看进...

    砸漏
  • 【linux】中lsof、ps、netstat的优雅使用

    losf:(列出打开文件lists openfiles)能看到pid和用户(有权限控制,只能看到本用户),可以找到哪个进程占用了这个端口

    斑马
  • 一次文件句柄消耗过多的排查过程

    随着业务迭代,部分项目用nodejs重构后,部署到k8s环境下运行。为了便于分析,上了一版代码,增加输出日志的功能。

    二狗不要跑
  • 解决 Swoole 服务报错 Too many open files 文件句柄超出系统限制

    如果在 Swoole 的日志中遇到了 Too many open files 这种报错,不要慌,在开发 TCP 网络应用的过程中,经常会遇到Too many o...

    沈唁
  • Linux之lsof命令

    原文链接:https://rumenz.com/rumenbiji/linux-lsof.html

    入门笔记
  • 数据恢复:如何恢复Linux中意外删除的Oracle和MySQL数据库

    张乐奕 云和恩墨副总经理,Oracle ACE总监,ACOUG 联合创始人 没有删除过数据库的DBA职业生涯是不完整的,删除过数据库还能幸存的DBA一定是订阅...

    数据和云
  • Linux 命令(124)—— lsof 命令

    lsof(list open files)用于查看进程打开的文件,是十分方便的系统监测工具。因为 lsof 命令需要访问核心内存和各种系统文件,所以需要 roo...

    Dabelv
  • Linux之lsof命令

    lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可...

    菲宇

扫码关注云+社区

领取腾讯云代金券