笔记:

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. 关于使用K8S的技术流程

    部署Gogs版本管理系统 地址:https://gogs.io/docs 部署Harbor私有仓库 地址:https://github.com/goharbor/harbor/blob/master/ ...

  2. elasticsearch配置文件中http.cors.x字段有哪些用途和用法

    http.cors.enabled 是否支持跨域,默认为false http.cors.allow-origin 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使 ...

  3. sqoop与hbase导入导出数据

    环境:sqoop1.4.6+hadoop2.6+hbase1.1+mysql5.7 说明: 1.文中的导入导出的表结构借鉴了网上的某篇博客 2.mysql导入hbase可以直接通过sqoop进行 3. ...

  4. NMS(non maximum suppression,非极大值抑制)

    """nms输入的数据为box的左上角x1,y1与右下角x2,y2+confidence,rows=batch_size,line=[x1,y1,x2,y2,confid ...

  5. 没有15k薪资都不会了解的测试内幕

    软件测试的工程师阶层是指随着行业的飞速发展,测试人员犹如身在洪流之中“逆水行舟不进则退”.知其然已经无法满足当今的测试人员,还要知其所以然.所以测试人员不仅仅要关注系统外部结构,还得了解系统内部的逻辑 ...

  6. Flask蓝图Blueprint和特殊装饰器

    Flask 中的 蓝图 Blueprint 不能被run的flask实例:相当于django中的app01 应用 蓝图作用:功能隔离 路由隔离 Blueprint就是 一个不能run的flask 蓝图 ...

  7. linux搭建stm32开发环境

    下载stm32固件库 创建目录 libs目录放stm32固件库,src放用户源码,inc放用户头文件 # mkdir libs src inc 复制文件 将STM32F10x_StdPeriph_Li ...

  8. jmeter的简单使用0723

    一.添加http请求 1.右击线程组---添加---取样器---http请求,具体内容如下图所示.如果请求带参数,则要点击下方的添加按钮来添加参数 2.查看请求结果,同样右击线程组-添加---监听器- ...

  9. ovirt平台新建kvm操作

    登录后点击管理门户,随后计算-->虚拟机--> 新建 一般情况下需要操作的选项如下: 普通: 操作系统:linux 优化目标:服务器 描述:自定义 nic1:选择默认的网络 系统: 内存, ...

  10. Flask入门很轻松 (二)

    转载请在文章开头附上原文链接地址:https://www.cnblogs.com/Sunzz/p/10959454.html 请求钩子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比 ...