使用jstack命令查看CPU高占用的问题记录
笔记:
1.top命令找出最高占用的进程(command为java)
2.查看高负载进程下的高负载线程:top -Hp 【PID】 (或 ps -mp PID -o THREAD,tid,time)
3.找出最高占用的线程并记录thread_id,把线程号 进行换算成16进制编号:printf "%X\n" thread_id
4.(可选)执行查看高负载的线程名称:jstack 16143【进程】 | grep 3fb6【线程】
5.导出进程的堆栈日志,找到3fb6 这个线程号:jstack 16143 >/home/16143.log
PS. 其它可能用到的命令:
1.输入:top -H -p PID 或 ps -mp PID -o THREAD,tid,time
找出最高占用的线程并记录thread_id
2.查看dump信息(-a 30 意思打印30行)
jstack pid |grep 16进制的thread_id -a 30
或者导出
jstack pid |grep 16进制的thread_id -a 30 > xx.log
案例记录:
定位:根据运维反馈CPU负载非常高,初步判断是应用代码问题,某个线程长时间在跑,占用CPU资源,比如死循环等等。
1、执行:top
查看高负载的进程

2、top -Hp 16143
查看高负载进程下的高负载线程

把线程号 16310 进行换算成16进制编号:3fb6
3、jstack 16143 | grep 3fb6
执行查看高负载的线程名称

根据查询到得线程名称可以知道是消息消费线程高负载。
4、jstack 16143 >/home/16143.log
导出进程的堆栈日志,找到3fb6 这个线程号

通过跟踪代码,确认有问题的代码方法。
四、问题修复
1、update操作 使用select 语句

2、修改类型为update,提交解决
五、总结
1、因为是一步线程,所以监控平台无法监控到具体代码行数
2、线程已经卡住,没有任何得日志信息提示
3、是一个典型得需要通过打印堆栈才能排查得高负载问题
使用jstack命令查看CPU高占用的问题记录的更多相关文章
- top命令定位CPU高占用代码
步骤如下: 1.使用top命令定位异常进程.可以看见12836的CPU和内存占用率都非常高 2.使用top -H -p 进程号查看异常线程 3.使用printf "%x\n" 线程 ...
- top命令查看CPU状态信息:%us、%sy、%ni、%id、%wa、%hi、%si、%st 表示的是什么意思
Linux CPU负载状态:%us/%sy/%ni/%id/%wa/%hi/%si/%st含义 2018-08-26 分类:Linux 评论(0) 缙哥哥发现用了雅黑的探针,在 Linux 的 C ...
- linux下用top命令查看cpu利用率超过100%
今天跑了一个非常耗时的批量插入操作..通过top命令查看cpu以及内存的使用的时候,cpu的时候查过了120%..以前没注意..通过在top的情况下按大键盘的1,查看的cpu的核数为4核. 通过网上查 ...
- Android使用adb命令查看CPU信息
Android中使用JNI编程的时候会需要编译出不同的SO文件,以供适配不同的机型. 例如: 由此需要查看不同机型的CPU信息. 使用ADB命令查看CPU信息命令如下: 1. adb shell 2. ...
- Linux下用命令查看CPU ID以及厂家等信息
Linux下用命令查看CPU ID // 获得CPU IDdmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}' // 获得磁盘IDfdi ...
- linux下top命令查看cpu占用情况
可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等.退出 top 的命令 ...
- Android系统adb命令查看CPU与内存使用率
1. 打开终端,进入上述目录,如下图所示: 2. 输入adb shell,打开adb命令行,如 ...
- linux 命令查看CPU和内存信息
几个cpu more /proc/cpuinfo |grep "physical id"|uniq|wc -l 每个cpu是几核(假设cpu配置相同) more /proc/cpu ...
- top command-linux下用top命令查看cpu利用率超过100%
1. 这里显示的所有的cpu加起来的使用率,说明你的CPU是多核,你运行top后按大键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来; 2.查看CPU信息; cat ...
随机推荐
- Intellij IDEA最全的热键表(default keymap)
Editing Ctrl + Space Basic code completion (the name of any class, method or variable) Ctrl + Shift ...
- java之spring mvc之页面跳转
1. 如果返回值为ModelAndView,在处理方法中,返回null时,默认跳转的视图名称为请求名.跳转结果会根据视图解析器来跳转. @RequestMapping("/hello.do& ...
- java之spring之对象的创建
首先提供目录结构如下: 下面提供各文件代码,以供参考: UserDynamicFactory.java package cn.sxt.factory; import cn.sxt.vo.User; / ...
- C# vb .net实现焦距淡色特效滤镜
在.net中,如何简单快捷地实现Photoshop滤镜组中的焦距淡色效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- 利用windows服务实现整点报时功能
程序语言:C# 实现目标:程序托管自动运行,每到整点播放语音报时. 准备素材:00——23点的整点报时声音文件. 实现过程: 1.新建windows服务项目 2.添加安装程序 3.设置服务属性 [添加 ...
- 如何在CentOS / RHEL 7上启用IPv6
默认情况下,在RHEL / CenOS 7系统上启用IPv6.因此,如果故意在系统上禁用IPv6,则可以通过以下任一方法重新启用它. 1.在内核模块中启用IPv6(需要重启)2.使用sysctl设置启 ...
- 记一次线上问题排查:C#可选参数的坑
线上报了大量异常,错误信息为:找不到XX方法实现 代码调用关系是: 查看代码历史记录,发现最近上线前对 GetUserDottedLineSuperiors 方法做过修改,增加了一个可选参数. 跟相关 ...
- Java之路---Day08
2019-10-22-22:28:39 目录 1.Static静态类 2.Static内存图 3.Static静态代码块 4.Arrays类 5.Math类 Static静态类 一旦使用static修 ...
- Spring AOP无法拦截Controller的原因
因为Spring的Bean扫描和Spring-MVC的Bean扫描是分开的, 两者的Bean位于两个不同的Application, 而且Spring-MVC的Bean扫描要早于Spring的Bean扫 ...
- pandas-04 多级index操作
pandas-04 多级index操作 在pandas中可以为series和dataframe设置多个index,也就是说可以有多级index和column.这样可以对pandas的操作更加灵活. i ...