笔记:

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高占用的问题记录的更多相关文章

  1. top命令定位CPU高占用代码

    步骤如下: 1.使用top命令定位异常进程.可以看见12836的CPU和内存占用率都非常高 2.使用top -H -p 进程号查看异常线程 3.使用printf "%x\n" 线程 ...

  2. 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 ...

  3. linux下用top命令查看cpu利用率超过100%

    今天跑了一个非常耗时的批量插入操作..通过top命令查看cpu以及内存的使用的时候,cpu的时候查过了120%..以前没注意..通过在top的情况下按大键盘的1,查看的cpu的核数为4核. 通过网上查 ...

  4. Android使用adb命令查看CPU信息

    Android中使用JNI编程的时候会需要编译出不同的SO文件,以供适配不同的机型. 例如: 由此需要查看不同机型的CPU信息. 使用ADB命令查看CPU信息命令如下: 1. adb shell 2. ...

  5. Linux下用命令查看CPU ID以及厂家等信息

    Linux下用命令查看CPU ID // 获得CPU IDdmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}' // 获得磁盘IDfdi ...

  6. linux下top命令查看cpu占用情况

    可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等.退出 top 的命令 ...

  7. Android系统adb命令查看CPU与内存使用率

     1. 打开终端,进入上述目录,如下图所示:                                                     2. 输入adb shell,打开adb命令行,如 ...

  8. linux 命令查看CPU和内存信息

    几个cpu more /proc/cpuinfo |grep "physical id"|uniq|wc -l 每个cpu是几核(假设cpu配置相同) more /proc/cpu ...

  9. top command-linux下用top命令查看cpu利用率超过100%

    1.  这里显示的所有的cpu加起来的使用率,说明你的CPU是多核,你运行top后按大键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来;    2.查看CPU信息; cat ...

随机推荐

  1. Linux 7 重置root密码

    在运维工作中经常会遇到不知道密码,密码遗忘,密码被他人修改过的情况,使用这种方式扫清你一切烦恼! 1.启动Linux系统,在出现引导界面时,按“e”键,进入内核编辑界面:2.找到有“linux16”的 ...

  2. 在.net core中数据操作的两种方式(Db first && Code first)

    在开发过程中我们通常使用的是Db first这种模式,而在.net core 中推荐使用的却是 code first 反正我是很不习惯这种开发模式 于是就搜寻整个微软的官方文档,终于找到了有关.net ...

  3. 【ElasticSearch】查询优化

    一.背景 每周统计接口耗时,发现耗时较长的前几个接口tp5个9都超过了1000ms. 经过分析慢查询的原因是ES查询耗时太长导致的 二.设计方案 1.问题定位 查询功能使用不当导致慢查询 索引设计存在 ...

  4. 遍历js对象中的属性

    可以使用js自带的for in.也可以使用Ext JS中的方法来遍历js对象中的属性 代码如下: /** 遍历对象 */ var person = {name:'张泰松',age:28}; //js方 ...

  5. 填坑——audio不能正常播放,控制台报错 Uncaught (in promise) DOMException

    原文:https://blog.csdn.net/Mariosss/article/details/87861167 用chrome调试页面时,发现audio控件有时不能正常播放音频,控制台报错 Un ...

  6. Doctype作用,标准模式与兼容模式的区别

    <!DOCTYPE>声明位于位于HTML文档中的第一行,处于 <html> 标签之前.告知浏览器的解析器用什么文档标准解析这个文档.DOCTYPE不存在或格式不正确会导致文档以 ...

  7. 自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave

    自旋锁和互斥锁的区别是,自旋锁不会引起睡眠,所以可用于不能休眠的代码中(如IRQ) 自旋锁保持期间抢占失效,而信号量保持期间可以被抢占 定义 spinlock_t lock; init #define ...

  8. 使用 shell 脚本配置 iOS 工程

      APP开发过程中,往往需要在多个网络环境或配置中进行切换,以获取不同配置的APP,甚至有时需要用一套代码经过简单的配置生成不同的APP.而手动配置费时费力,且容易出错.这里介绍用脚本工具,去生成不 ...

  9. 基于代理类实现Spring AOP

    目录 ProxyFactoryBean类介绍 基于JDK动态代理的Spring  AOP实现 基于CGLIB代理的Spring  AOP实现 Spring的通知类型 ProxyFactoryBean类 ...

  10. Unity Physicals Rigidbody with multiple colliders

    Rigidbody with multiple colliders adding colliders changes the center of mass and rotation behaviour ...