使用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 ...
随机推荐
- 让js中的函数只有一次有效调用
设置隐藏域~ <input type="hidden" value="1" id="flag" /> 其它三种方法
- Java之路---Day03
2019-10-17-21:18:33 方法 定义格式: public static void 方法名称() { 方法体 } 完整格式: 修饰符 返回值类型 方法名称(参数类型 参数名称,... ...
- JAVA9之后废弃newInstance()方法
JAVA9之后废弃newInstance()方法 根据JAVA11的API 我们可以看见反射中的newInstance()方法不推荐使用了,用 clazz.getDeclaredConstructor ...
- JAVA项目之注册
public class RegisterServlet extends HttpServlet { private UsersService usersService = new UsersServ ...
- 移动端H5长按事件 vue自定义指令
import Vue from 'vue' Vue.directive('longpress', function (el, binding){ var timer = null; var start ...
- Java开发环境之Maven
查看更多Java开发环境配置,请点击<Java开发环境配置大全> 肆章:Maven安装教程 1)下载Maven安装包 https://maven.apache.org/download.c ...
- MySQL基础操作与数据类型
目录 1.文件夹(库) 2.文件(表) 3.文件的一行内容 4.创建表的完整语法 5.整型类型 6.补充sql_mode 7.浮点型 8.字符类型 9.日期类型 10.枚举与集合类型 1.文件夹(库) ...
- ITIL 4Foundation认证
2019年5月参加了ITIL 4Foundation培训和认证.最新的ITIL4版本中,结合了Lean.Agile和DevOps的思想.经过学习后,在思想上有很大的收货. 在此记录自己的成长.
- CSS选择器知识梳理
<一>CSS选择器结构逻辑图 温馨提示:各位小伙伴,可以把逻辑图下载下来放大,看的比较清除,也可以给我留言,我分享原百度脑图给各位小伙伴. <二>接下来按照结构逻辑图具体讲解各 ...
- jquery 表单对象属性筛选选择器
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...