当前位置: 首页 > news >正文

线上问题排查之【CPU飙高100%】

目录

案例

发现问题

排查问题

步骤一

步骤二

步骤三


案例

import java.util.concurrent.TimeUnit;/*** 简单写一个CPU飙高的案例*/
public class CpuLoadUp {// 这里定义了一个标识private volatile static int flag = 0;public static void main(String[] args) {// 执行线程A的处理逻辑threadAProcess();// 执行线程B的处理逻辑threadBProcess();}public static void threadAProcess() {// 这里只是作为案例演示,实际上这里使用的是线程池new Thread(() -> {try {// 这里模拟业务逻辑需要处理很久TimeUnit.MINUTES.sleep(10);// 业务处理完之后更改标识flag为1flag = 1;} catch (InterruptedException e) {// 业务逻辑处理失败}}, "thread-A").start();}public static void threadBProcess() {// 这里只是案例演示,实际上这里使用的是线程池new Thread(() -> {// thread-A中的业务逻辑执行太久使得这里一直循环for (; ; ) {// 执行某业务逻辑// 直到flag为1时,执行结束,跳出循环if (flag == 1) {break;}}}, "thread-B").start();}
}

发现问题

  • 使用【top】命令查看到有一个java进程CPU飙到100%,进程号为2567
  • 使用【jps】命令查看到正在运行的java程序
# top指令查看系统后台的进程状态
top

# jps指令查看正在运行的Java进程
jps

排查问题

步骤一

使用【top -Hp <进程ID>】查看进程中占用率最高的线程,占用率达到99.9%的线程PID为2578

top -Hp 2567

步骤二

将线程的PID转换为十六进制,结果是a12

public class MainTest {public static void main(String[] args) {// 查看2578的十六进制数,结果为a12System.out.println(Integer.toHexString(2578));}
}

步骤三

使用【jstack】命令查看线程堆栈信息,用十六进制线程ID搜索

# [-A 10]代表查看后10行信息
jstack 2567 | grep -A 10 'a12'

http://www.lryc.cn/news/594924.html

相关文章:

  • 在幸狐RV1106板子上用gcc14.2本地编译安装mysql-8.0.42数据库
  • 一维DP深度解析
  • ElasticSearch是什么
  • 如何使用Ansible一键部署Nacos集群?
  • Android 蓝牙通讯全解析:从基础到实战
  • 【STM32】485接口原理
  • 元图 CAD:PDF 与 CAD 格式互转的完美解决方案
  • 部署 Zabbix 企业级分布式监控
  • WPF 初始界面启动时播放背景音乐
  • 合并pdf工具下载
  • Redis进阶--缓存
  • 如何使用python网络爬虫批量获取公共资源数据
  • 微软CEO Satya Nadella提出AI重构法则:从范式跃迁到社会盈余
  • 本地生活服务 app 同城信息发布系统搭建
  • delphi disqlite3 操作sqlite
  • C# 计算梯形面积和周长的程序(Program to calculate area and perimeter of Trapezium)
  • 在Windows Server 2012 R2中安装与配置IIS服务并部署mssql靶机教程
  • 【世纪龙科技】新能源汽车概论-汽车教学数字课程资源
  • 如何编写假设和约束---SRS软件需求规格指南系列
  • 概率论与数理统计(八)
  • 【跨国数仓迁移最佳实践2】MaxCompute SQL执行引擎对复杂类型处理全面重构,保障客户从BigQuery平滑迁移
  • java和ptyhon对比
  • C# Lambdab表达式 Var 类
  • PyQt5—QInputDialog 学习笔记
  • Iridium Certus 9704 卫星物联网开发套件
  • uniapp app pdf.js报错:Uncaught SyntaxError:Unexpected token ‘{‘
  • UART串口
  • 学习日志7.21
  • QT6 源,七章对话框与多窗体(6) 颜色对话框 QColorDialog :本类的属性,信号函数,静态成员函数,以及源代码
  • 使用AI把普通的条形柱状图,丰富成“好看高大上”的条形柱状图