cpu飙升居高不下,这种事情虽然很少,可能在一家公司待一年也不会发生一次。

但是这种故障一旦发生了,可能就很严重。

那么当我们某个Java项目占比很高了,怎么定位到代码?

一、top

看一下大概情况,看看谁占的最高,会显示每个进程和具体的cpu占比,我这里显示的是正常情况,特殊情况下,cpu可能飙升到100%,200%

如果你想知道这个进程对应的应用信息,可以

ps -17464

这个命令可以显示进程对应的服务名,jar包,路径,还有内存配置等信息。

二、假如现在上面pid为17464的进程占的很高,达到了200%了。这时候,我们要看一下这个进程的线程情况。因为进程cpu过高,还是因为它里面的线程cpu过高。这里面可能是由一个线程导致,也有可能由多个线程共同导致的。比如说,一个进程总的cpu达到200%了,可能是由三个子线程分别占用60%多的比例。

top -p 17464 -H

-H表示看线程信息,注意这里虽然列名还是"pid",但实际上已经是表示线程的id,就是17464这个进程下所有的线程信息,cpu占比也在其列。

z

三、假如就是上面17614的线程占用了绝大部分cpu,虽然实际上可能有多个线程同时是高占用内存,我们这里假设就它一个。找到这个线程之后,就是要看它的堆栈信息,这是寻找问题根源的关键。

首先将转换成线程id转成16进制,得到44ce

[root@VM-0-15-centos ~]# printf "%x\n" 17614
44ce

四、查看该进程下该线程的堆栈信息。

1、先将堆栈信息写入到文件中

jstack 17464> thread_stack.log

2、然后在文件中查找根据线程0x44ce去找日志就可以了

备注:一般情况我们会执行jstack 17464 | grep 44ce去查看堆栈信息,但是有时候会报错,提示:

18626: Unable to open socket file: target process not responding or HotSpot VM not loaded

具体原因后面再看

java 项目cpu飙升故障排查相关推荐

  1. Java线上应用故障排查之一:高内存占用

    Java线上应用故障排查之一:高内存占用 转载地址:http://www.blogjava.net/hankchen 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMe ...

  2. windows服务器java项目cpu占用较高原因分析

    前言 在windows平台上要找出到底是哪个线程占用的cpu还不那么容易,linux用top就简单多了最后的解决方法: 1.找到java进程对应的pid. 找pid的方法是:打开任务管理器,然后点击 ...

  3. Java程序CPU飙升排查,找出死循环代码

    windows环境下cpu飙升问题 线上某台runtime机器(windows Server)cpu报警,这种情况初步就是代码里面死循环了,先把机器下线了保证不再有新的任务分配进来,然而cpu使用依然 ...

  4. 线上服务导致cpu飙升问题排查

    一.故障说明 昨晚突然收到线上服务器cpu报警,登录监控平台看了下发现cpu瞬间飙升到60%.第一反应就是使用top命令去查看,发现是一个java进程.于是立刻使用jps -l命令定位到该java进程 ...

  5. Java进程CPU使用率高排查

    1.使用top 定位到占用CPU高的进程PID top 通过ps aux | grep PID命令 2.获取线程信息,并找到占用CPU高的线程 ps -mp pid -o THREAD,tid,tim ...

  6. 全面Java程序线上故障排查

    文章内容过长,望读者见谅,小编在文末准备了彩蛋 目录 这篇文章是在公司做了不少的线上Java服务故障排查和优化之后的一个总结,可以作为一个工具清单,在分析问题的时候需要有整体思路:全局观,先从系统层面 ...

  7. Java线上应用故障排查之二:高内存占用

    前一篇介绍了线上应用故障排查之一:高CPU占用,这篇主要分析高内存占用故障的排查. 搞Java开发的,经常会碰到下面两种异常: 1.java.lang.OutOfMemoryError: PermGe ...

  8. 生产环境下JAVA进程高CPU占用故障排查

    感谢原作者 http://blog.chinaunix.net/uid-10449864-id-3463151.html 问题描述: 生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常 ...

  9. Java线上应用故障排查之一:高CPU占用

    一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hank ...

  10. java应用挂死故障排查

    现象: java开发的web应用无法访问 排查: 1.从resin/log/watchdog-manager.log的日志里可以看出来,jvm的内存满,无法创建新进程 java.lang.OutOfM ...

最新文章

  1. 重磅!中科院白洋研究员加入《宏微名师讲堂》分享高通量分菌技术啦!
  2. flex 客户端缓存SharedObject
  3. 查看php-fpm 占用内存情况
  4. java 将Map拷贝到另一个Map对象当中
  5. java createjpeg4_在linux下用java的JPEGCodec.createJPEGEncoder(bos)生成jpg图片问题
  6. nuxt route 全局管理 route.beforeEach 替代
  7. python-运算符-比较运算符
  8. android usb存储固定,如何在Android 10中设置默认USB行为
  9. 关于NSArray使用时用strong修饰还是copy修饰问题测试
  10. Centos6.5 恢复误删的系统面板
  11. 三菱PLC与上位机通讯协议讲解
  12. 《金字塔原理》读书笔记(全)
  13. 基于stm32智能门锁系统
  14. 国科大计算机算法与分析——陈玉福 马菲菲
  15. vmware虚拟机共享文件夹设置(xp)
  16. python英文词频统计软件_英语词频统计软件功能介绍
  17. java注释/关键字/标识符/常量/
  18. 浙江师范大学计算机复试考什么,浙江师范大学考研难吗?一般要什么水平才可以进入?...
  19. 在Ubuntu5.1中安装NVIDIA TNT2 M64老式显卡驱动程序..
  20. 联想服务器出现系统恢复选项,Win10更新系统后开机提示自动修复的常规解决方案...

热门文章

  1. 2年修完6个清华CS硕士学位第3周反思报告
  2. 如何设置excel表格表头冻结_excel怎么冻结窗口固定表头_excel冻结窗口固定表头详细教程 - 系统家园...
  3. 基于扩展卡尔曼滤波的多传感器融合定位
  4. View和ViewGroup的区别
  5. 校园导航小助手—课程设计
  6. 网页中提取SWF游戏文件及运行修改
  7. 动态域名解析服务(花生壳)
  8. 计算机职业资格证书介绍(大全)
  9. 安卓开发——Intent跳转地图应用(百度地图、高德地图)
  10. 小程序毕业设计 基于微信考试小程序毕业设计开题报告功能参考