最近比较忙,就简单写个随笔吧。

简述

对于cpu爆满问题,常常会分析是否存在问题线程,本文记录一种通过top快速找到问题线程nid的方式。

找到问题进程PID

通过top找到问题进程,例如下面有个进程CPU占用率高达99%,他的PID=270973

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND270973 worker    20   0 7166968 1.537g   3684 S   99.0 50.5  86501:25 java
1285003 root      20   0 14.107g 4.651g   5664 S   0  0.4 762:10.25 java
2805995 root      20   0  9.829g 2.587g   4604 S   0  0.1   3061:22 java

找到问题线程PID

通过top -p 270973 -H查找问题线程。
其中-p 270973表示查找指定进程270973的信息,-H表示线程模式。

    PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
2447223 root      20   0 3819540 1.319g   5960 S  80.3 42.1 121:25.99 ydbot-client
2447225 root      20   0 3819540 1.319g   5960 S  0.3  2.1  27:41.90 ydbot-client
2447230 root      20   0 3819540 1.319g   5960 S  0.3  2.1  27:57.98 ydbot-client

经对比,发现问题线程的PID=2447223

将线程PID转换为nid

线程的nid是十六进制的,在linux系统中,通过shell命令printfPID进行转换:

$ printf 0x%x 2447223
0x255777

其中0x%x0x是固定字符串,%x是printf的十六进制的转换类型。

后续分析

后续通过jstack等工具进行分析,例如:

[root@103-17-208-lg-201-k08 services]# jstack -l 11 |grep 0x255777
2019-09-10 16:18:51
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.73-b02 mixed mode):"Attach Listener" #18769 daemon prio=9 os_prio=0 tid=0x00007f64dc0d4000 nid=0x255777 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"Keep-Alive-Timer" #18768 daemon prio=8 os_prio=0 tid=0x00007f64c83b8000 nid=0x255777 waiting on condition [0x00007f63ec6e7000]java.lang.Thread.State: TIMED_WAITING (sleeping)at java.lang.Thread.sleep(Native Method)at sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:172)at java.lang.Thread.run(Thread.java:745)

其他分析不再赘述。

随笔-在linux通过top命令查找问题线程的nid相关推荐

  1. linux中top命令_Linux中的top命令指南

    linux中top命令 The atop command is a tool for monitoring system resources in Linux. It displays tons of ...

  2. linux中top命令详解

    linux的top命令里的cpu信息是什么意思呢?  Cpu(s): 62.1% us, 15.9% sy,0.1% ni, 19.4% id,2.0% wa,0.1% hi,0.4% si  Mem ...

  3. 图解linux下top命令的使用

    图解linux下top命令的使用 2012-09-27      0个评论    来源:程序员文摘   收藏    我要投稿 top命令经常用来监控linux的系统状况,比如cpu.内存的使用,程序员 ...

  4. linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义

    linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义 linuxpstop http://javawind.net/p131 VIRT:virt ...

  5. linux+top+常用参数,linux的top命令参数详细说明

    Linux中的top命令是个常用的命令之一,下面由学习啦小编为大家整理了Linux的top命令参数详细说明,希望对大家有帮助! linux的top命令简介 top命令是Linux下常用的性能分析工具, ...

  6. Linux下top命令详解

    Linux下top命令详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷 ...

  7. Linux 的 top命令参数详解 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

    Linux 的 top命令详解 这张图是真实的阿里云云服务器上,使用了top命令之后的信息. 1.上半部分显示了整体系统负载情况 1.1 top 第一行: 从左到右依次为当前系统时间,系统运行的时间, ...

  8. Linux中top命令参数说明

    Linux中top命令参数说明 top命令被我经常用来监控linux的当前服务器资源使用情况,是常用的性能分析工具,能够实时看到系统中各个进程的资源占用情况. top -d 3 (每三秒刷新一次) t ...

  9. linux 之top命令详解

    http://bbs.54master.com/redirect.php?tid=272658&goto=lastpost 发表于 2008-9-21 16:31 linux 之top命令详解 ...

最新文章

  1. 【怎样写代码】工厂三兄弟之工厂方法模式(五):工厂方法模式扩展
  2. LVS +DR +keepalived高可用性web集群
  3. 【 FPGA 】Xilinx设计约束(XDC)中时钟约束的表示方法
  4. 四川网络推广浅析网站标题到底能不能修改,什么时候能修改?
  5. python编译器怎么运行不在路径中的py文件_对python当中不在本路径的py文件的引用详解...
  6. Tomcat源代码解析系列
  7. nginx之反向代理服务器
  8. Redis学习---(7)Redis 字符串(String)
  9. 滴滴顺风车再调整服务时间:男女用户一视同仁
  10. java编写正则表达式引擎_从0到1打造正则表达式执行引擎(一)
  11. 3ds Max2021安装步骤详解
  12. wpf 复制到粘贴板_将WPF UI单元复制到剪贴板
  13. 解决 Intel Extreme Tuning Utility(XtuService)的日志占用过大(直接删Logs或卸载)
  14. 如何成为一名优秀的技术工程师?
  15. 微信小程序苹果手机statusBarHeight状态栏高度为0
  16. 谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
  17. 你想要的样子 我都有
  18. 20200524西瓜视频的视频下载打开的步骤(未完成)
  19. 怎么取名都不队-DevOps
  20. 教育行业电商SaaS系统解决方案:助力企业实现经营、管理一体化

热门文章

  1. 免杀艺术 1: 史上最全的免杀方法汇总
  2. 我的世界末日之后无限法则服务器,Last Day Rules官方版
  3. 黑客泄露微软XP系统源代码,就连比尔盖茨的私密文件也难逃一劫
  4. 原生js实现QQ邮箱邮件拖拽删除功能
  5. java代码查询elasticsearch索引
  6. Ebox 的OS定制
  7. 用apline-linux创建的tomcat容器中查看catalina.out日志中文乱码问题解决
  8. 帮朋友 解决一道 LeetCode QJ上问题
  9. break、continue、goto
  10. /phalcon.zep.c:130892: error: ‘ZEND_FE_END’ undeclared here (not in a function)