如何排查CPU占用太高
2024-09-04 23:16:57
线上项目运行时,出现问题不像在本地那么容易排查,经常需要借助日志、或者一些工具来找出问题。cpu被占满我们经常会遇到。比如我们有这样一段代码:
public Class Demo1_16 { public static void main(String[] args) { new Thread(null, () -> {
System.out.println("...");
while(true) { }
}, "thread1").start;
}
}
具体排查方法就是:
- top 命令定位进程,比如图中32655进程占用了97.
- 接着可以用 "ps H -eo pid, tid, %cpu | grep 进程id" 命令定位具体线程
- 最后用jvm命令 "jstack 进程id" ,根据线程id找到有问题的线程(10进制转换为16进制),具体到源代码行数。"thread3"这样开头的是我们自己写的程序,其他样式的是虚拟机线程,名称是固定的。
接着要将进程id转换为16进制,比如 32655 --> 0x7f99,也就是 “thread1”,具体到第8行代码有问题, 就是while死循环的问题。
最新文章
- 一文弄懂神经网络中的反向传播法——BackPropagation
- iOS·UIButton如何文字在下图片在上
- ndk-stack 使用(分析native代码stack)
- 深入理解Java之线程池
- HTML5&;CSS3经典动态表单-2
- Java学习-011-创建文件实例及源代码
- javascript高级编程笔记05(面向对象)
- 原已经安装好的nginx,现在需要添加一个未被编译安装的模块--echo-nginx-module-0.56
- C语言对象化编程
- 软件介绍:搜索工具 Listary
- bfs UESTC 381 Knight and Rook
- ES6正则表达式扩展
- Android binder机制---概述
- 玩一把JS的链式调用
- 使用Mkdocs构建你的项目文档
- LOJ #116 有源汇点有上下界的最大流
- Mongodb3.6 基操命令(二)——如何使用help
- 应对 Visual Stdio 编译时出现错误:常量中有换行符
- 【转】PO/POJO/BO/DTO/VO的区别
- k8s cronjob设置作业失败后退出不重复执行
热门文章
- Java中的堆和栈
- 注解实现SpringCache自定义失效时间
- 时间序列神器之争:prophet VS lstm
- javascript 面向对象学习(一)——构造函数
- 君荣一卡通软件mysql转sqlserver 教程
- scws中文分词安装和使用
- apt update 提示 Release file for http://… is not valid yet (invalid for another d..)
- Linux防火墙iptables详解
- Linux下配置tomcat
- cc28c_demo.cpp,派生类的构造函数和析构函数-代码示范3