CPU异常往往是业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用jstack来分析对应的堆栈情况,本文通过死循环方式重现CPU过高场景,并实例讲解CPU过高问题排查的方式。

1.环境

  • Centos7 1核2GB
  • Java8

2.模拟cpu占用高

创建 cpu-over-test 项目,添加了一个MyMainClazz类。里面有一个可是要 java -jar 执行的Main方法
模拟代码如下

public class MyMainClazz {public static void main(String[] args) {System.out.println("run start ...");while (true) {}}
}

cpu-over-test-1.0.jar
下载地址:https://pan.baidu.com/s/1-VTQ02qrb1l010MiFshHzw
密码:iqjl

3.启动模拟程序

  • cpu-over-test.jar上传到服务器
  • 启动命令
nohup java -jar cpu-over-test-1.0.jar  &

启动成功示例:

启动成功后,几秒功夫就看到cpu 百分之百了

4.问题排查四步骤

4.1.查看占用CPU高的进程

top

如下图:整体CPU高达96.3%
可看出PID为 14855 的java进程占用cpu最高,达到了92.3%

4.2.查看进程中最耗CPU的子线程

使用命令:top -p 进程pid -H

top -p 14855 -H

如下图:可看出PID为14856的线程占用cpu最高,达到了92.3%

4.3最耗CPU的线程id转换为16进制

使用命令:printf “%x \n” 线程PID

 printf "%x \n" 14856

4.4查看具体出现问题的代码位置

使用命令:jstack 进程pid | grep 线程ID转换为16进制值 -C20

jstack 14855 | grep 3a08 -C20

CPU占用高及问题排查相关推荐

  1. java 进程 cpu占用_JAVA进程CPU占用高的故障排查 – 运维那些事

    问题分析: 1.程序属于CPU密集型,和开发沟通过,排除此类情况. 2.程序代码有问题,出现死循环,可能性极大. 解决过程: 1.根据top命令,发现PID为2633的Java进程占用CPU高达300 ...

  2. java模拟cpu返回_Java CPU 占用高 模拟及排查

    jiankunking@ubuntu:~$ jstack 4463 |grep 1170 -A 30 "main" #1 prio=5 os_prio=0 tid=0x00007f ...

  3. SQLSERVER排查CPU占用高的情况

    今天中午,有朋友叫我帮他看一下数据库,操作系统是Windows2008R2 ,数据库是SQL2008R2 64位 64G内存,16核CPU 硬件配置还是比较高的,他说服务器运行的是金蝶K3软件,数据库 ...

  4. java cpu高_Java中的CPU占用高和内存占用高的问题排查

    下面通过模拟实例分析排查Java应用程序CPU和内存占用过高的过程.如果是Java面试,这2个问题在面试过程中出现的概率很高,所以我打算在这里好好总结一下. 1.Java CPU过高的问题排查 举个例 ...

  5. Linux中Python程序CPU占用高排查

    Linux中Python程序CPU占用高排查,Linux中Python程序CPU占用高排查,Linux中Python程序CPU占用高排查 kafka-python==2.0.2和 gevent 新版本 ...

  6. Java吃CPU还是内存_Java中的CPU占用高和内存占用高的问题排查

    下面通过模拟实例分析排查Java应用程序CPU和内存占用过高的过程.如果是Java面试,这2个问题在面试过程中出现的概率很高,所以我打算在这里好好总结一下. 1.Java CPU过高的问题排查 举个例 ...

  7. java进程CPU占用高如何排查-案例二

    近期项目新版本上线遇到cpu冲高现象,依据之前的经验,把这次排查过程记录下. 这次排查参考了之前记录的经验,还是很有用的:java进程cpu占用高如何排查_停5s的博客-CSDN博客_java进程cp ...

  8. Python应用CPU占用高问题排查

    Python应用CPU占用高问题排查 http://t.zoukankan.com/honglingjin-p-15159199.html公司购买了一套由外部供应商提供的呼叫中心系统,在使用的过程中发 ...

  9. java进程cpu占用高如何排查

    问题: 公司参加HW期间,项目两台双活的jboss服务器频繁触发cpu利用率过高告警,cpu利用率长时间在90%以上. 排查思路: 第一步:在两台Linux服务器上,执行top命令,并按大写P以cpu ...

最新文章

  1. VScode中html怎么引入js,vscode中如何使用typescript,如何自动编译成js文件
  2. linux技巧----查找某个正在执行的脚本
  3. 背景选择器selector替换按钮默认背景
  4. Android的listview滚动时背景不让变黑解决办法
  5. CreateFile系类异步、并行(同一个串口发送接收)
  6. 十年测试之路的笔记分享
  7. 读书笔记:陈希孺:概率论与数理统计:2014.01.01
  8. 收藏一篇关于 用两个栈实现一个队列功能的帖子
  9. word如何批量居中图片
  10. Automation服务器不能创建对象--Excel.application
  11. Large-Scale Order Dispatch in On-Demand Ride-Hailing Platforms: A Learning and Planning Approach论文精读
  12. svn上传新项目的时候出现Can't set position pointer in file 'D:\***\*.rev':配额不足,无法完成请求的服务
  13. 通达信股本变迁文件(gbbq)解密方法
  14. CIDR地址规划方法
  15. html博客设计论文,个人博客网站(论文).doc
  16. 洛谷P1489 猫狗大战
  17. 56网首发2012APEC青创会主题微电影
  18. [NEXT] 时间管理实践
  19. 最有效的方法来增加在Map中的值
  20. kindle怎么导入电子书

热门文章

  1. pytorch与ROCM
  2. 【2017.11.15】色彩的奥秘
  3. lisp调用qleader端点_CAD常用命令大全全解.doc
  4. html 怎么播放avi视频,Uniboy跳舞激怒Kanavi,JDG让一追二,艰难战胜V5
  5. SqlCommand 添加参数-与DataAdapter更新
  6. 【转】二战,真实版越狱王!冯.维拉
  7. 问的人太多,受不了,提前开售了,美杜莎、比比东还有...
  8. oppo r11 android版本,oppo r11有几个版本?oppor11各版本区别对比介绍
  9. Excel中如何时间加减法
  10. BitLocker误锁,开机登录界面进不去了