告别重启大法,CPU飙高问题如何排查详细教程以及解决方案

文章目录

  • 0 前言
  • 1.确定问题进程
  • 2.获取线程信息
  • 3.转换线程ID为十六进制
  • 4.获取线程堆栈
  • 5.分析代码
  • 6.性能分析工具
  • 7. 查看GC日志
  • 8.检查系统资源
  • 总结

0 前言

  本篇是本人认为最实用的一篇,在日常开发运维工作中,经常遇到CPU较高的情况,一开始时还不知道怎么定位是哪个方法导致了CPU过高,一头雾水,无法定位问题,本文详细介绍如何定位CPU过高的问题修改。

1.确定问题进程

首先,使用top命令找出占用CPU较高的java进程:

  top

  找到对应的进程ID号
在这里插入图片描述

2.获取线程信息

  使用top -Hp 命令查看该进程内各个线程的CPU占用情况。

top -Hp <PID>

  记录下占用CPU较高的线程ID
在这里插入图片描述

3.转换线程ID为十六进制

  使用printf命令将线程ID 19664 转换为十六进制,结果4X4cd0。

 printf “%x\n" <线程ID>

4.获取线程堆栈

  使用jstack命令获取进程的线程堆栈信息:
在这里插入图片描述

5.分析代码

  根据堆的信息,查看相关的java代码。以上是一些可能导致CPU飙升的代码示例:
  实战案例:
  死循环1:
在这里插入图片描述
频繁垃圾回收2:
在这里插入图片描述
不当的线程同步3:
在这里插入图片描述
密集的计算机计算指标4:
在这里插入图片描述

6.性能分析工具

  可以使用诸如Arthas、JProfile等Java性能分析工具进行更深入的分析。

7. 查看GC日志

  如果怀疑GC问题,可以查GC日志。

	jstat -gcutil <PID> 1000

8.检查系统资源

  使用vmstat、iostat等命令检查系统资源使用情况,排除是否为系统资源问题通过以上步骤,我们可以定位到导致CPU飙高的具体代码位置,然后进行相应的优化。常见的优化方法包括:优化算法、增加缓存、调整线程池参数、优化数据库查询等。在进行优化时,要注意进行充分的测试,以确保修改不会引入新的问题。

总结

  本章的标题是告别重启大法,就是我们以后遇到问题后,已经知道怎么取定位以及解决问题了,不再是稀里糊涂的把系统重启后,反复出现问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/913398.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化的教程

在 Jupyter Notebook 中使用 Matplotlib 进行交互式可视化的教程 引言 数据可视化是数据分析的重要组成部分&#xff0c;能够帮助我们更直观地理解数据。Matplotlib 是 Python 中最流行的绘图库之一&#xff0c;而 Jupyter Notebook 则是进行数据分析和可视化的理想环境。本文…

数据库SQL——什么是实体-联系模型(E-R模型)?

目录 什么是实体-联系模型&#xff1f; 1.实体集 2.联系集 3.映射基数 一对一&#xff08;1:1&#xff09; 一对多&#xff08;1:n&#xff09; 多对一&#xff08;n:1&#xff09; 多对多&#xff08;m:n&#xff09; 全部参与&#xff1a; 4.主码 弱实体集&#xf…

机器学习4_支持向量机_核函数——MOOC

目录 核函数的定义 核函数以及低维到高维的映射 的相互关系 例1&#xff1a;已知 求 K 例2&#xff1a;已知核函数 K 求 映射 的例子 核函数 K 求 映射 是一一对应的关系 支持向量机优化问题 K 满足交换性和半正定性 内积的形式 例如&#xff1a;可以证明 核函数…

LRU-LFU缓存算法

文章目录 缓存算法LRU缓存算法LFU缓存算法定义实现方法一&#xff1a;哈希表平衡二叉树方法二&#xff1a;双哈希表哈希链表方法三&#xff1a;双哈希表 缓存算法 LRU缓存算法 https://labuladong.online/algo/data-structure/lru-cache/ LRU&#xff08;Least Recently Use…

斯坦福泡茶机器人DexCap源码解析:涵盖收集数据、处理数据、模型训练三大阶段

前言 因为我司「七月在线」关于dexcap的复现/优化接近尾声了&#xff0c;故准备把dexcap的源码也分析下。​下周则分析下iDP3的源码——为队伍「iDP3人形的复现/优化」助力 最开始&#xff0c;dexcap的源码分析属于此文《DexCap——斯坦福李飞飞团队泡茶机器人&#xff1a;带…

DICOM标准:DICOM医学影像中的覆盖层(Overlay)概念详解

引言 DICOM&#xff08;数字成像和通信医学&#xff09;标准在医学影像的存储、传输和交换中起着关键作用。覆盖层&#xff08;Overlay&#xff09;作为DICOM标准中的一个重要组成部分&#xff0c;用于在医学影像上叠加图形信息&#xff0c;如注释、标记、测量结果等。本文将深…

Windows搭建流媒体服务并使用ffmpeg推流播放rtsp和rtmp流

文章目录 搭建流媒体服务方式一安装mediamtx启动meidamtx关闭meidamtx 方式二安装ZLMediaKit启动ZLMediaKit关闭ZLMediaKit 安装FFmpeg进行推流使用FFmpeg进行rtmp推流使用VLC播放rtmp流停止FFmpeg的rtmp推流使用FFmpeg进行rtsp推流使用VLC播放rtmp流停止FFmpeg的rtsp推流 本文…

[ Linux 命令基础 5 ] Linux 命令详解-网络管理命令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

深入浅出WebSocket(实践聊天室demo)

文章目录 什么是WebSocket?WebSocket连接过程WebSocket与Http的区别重连机制完整代码使用方法心跳机制实现聊天室demo(基于Socket.io)参考文章、视频小广告~什么是WebSocket? WebSocket 是一种在单个TCP连接上进行全双工通信的协议(计算机网络应用层的协议) 在 WebSocket A…

时序预测 | 改进图卷积+informer时间序列预测,pytorch架构

时序预测 | 改进图卷积informer时间序列预测&#xff0c;pytorch架构 目录 时序预测 | 改进图卷积informer时间序列预测&#xff0c;pytorch架构预测效果基本介绍参考资料 预测效果 基本介绍 改进图卷积informer时间序列预测代码 CTR-GC卷积,informer&#xff0c;CTR-GC 图卷积…

vue+Leaflet.PM插件实现创建和编辑几何图形(点、线、面、圆等)

场景 VueLeaflet实现加载OSM显示地图&#xff1a;https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/122317394在上面加载显示OSM的基础上&#xff0c;使用Leaflet.pm插件实现在页面上绘制、编辑、剪切、移动几何元素。Leaflet.pm插件 用于创建和编辑几何图层的插件可…

网站架构知识之Ansible进阶2(day023)

1.include文件 应用场景: 1个ansible剧本内容过多,涉及到多个play(- host:web),可读性变弱&#xff0c;不方便调试。 于是人们想出把单个大的剧本拆分为多个小的剧本&#xff0c; 多个小的剧本可以通过include功能合并使用。 使用方法&#xff0c;书写好对应的剧本文件&#…

订单日记助力“实峰科技”提升业务效率

感谢北京实峰科技有限公司选择使用订单日记&#xff01; 北京实峰科技有限公司&#xff0c;成立于2022年&#xff0c;位于北京市石景区&#xff0c;是一家以从事生产、销售微特电机、输配电及控制设备等业务为主的企业。 在业务不断壮大的过程中&#xff0c;想使用一种既能提…

论文阅读:DualDn Dual-domain Denoising via Differentiable ISP

这篇文章是 2024 ECCV 的一篇文章&#xff0c;介绍的是降噪相关的工作。 Abstract 图像去噪是相机图像信号处理 (ISP) 流程中的一个关键组成部分。将去噪器融入 ISP 流程有两种典型方式&#xff1a;直接对拍摄的原始帧&#xff08;RAW域&#xff09;应用去噪器&#xff0c;或…

详解MySQL安装

目录 Ubantu 1. 使⽤apt安装MySQL 2.查看MySQL状态 3. MySQL 安装安全设置 4.设置密码 卸载MySQL Centos 1. 确认当前的系统版本 2.下载MySQL源 3.安装MySQL 4.启动mysqld 5.查看MySQL状态 6.设置开机自启动 7.查看MySQL密码&#xff0c;并登录 8.修改密码 Ubant…

AndroidStudio-视图基础

一、设置视图的宽高 1.在XML文件中设置视图宽高 视图宽度通过属性android:layout_width表达&#xff0c;视图高度通过属性android:layout_height表达&#xff0c;宽高的取值主要有下列三种: &#xff08;1&#xff09;wrap_content:表示与内容自适应。对于文本视图来说&…

【LQ_tips】在DEVc++中的带空格的输入格式

目标输入&#xff1a; 3 4 5 6 关于cin.ignore();的解释&#xff1a; 在 DEV C 或任何其他 C 环境中&#xff0c;如果你的代码没有输出&#xff0c;这可能是由于输入缓冲区的问题。当你使用 cin 读取输入时&#xff0c;如果输入中包含空格&#xff0c;cin 会停止读取。因此&a…

dolphin 配置data 从文件导入hive 实践(一)

datax 支持多种数据源的相互读写&#xff0c;作为开源软件&#xff0c;提供了离线采集功能&#xff0c;方便系统开发&#xff0c;过程中遇到诸多配置&#xff0c;需要开发者自己探索&#xff0c;免费同样有成本 配置模板 {"setting": {},"job": {"s…

计算机网络综合题

IP数据报的划分 CRC差错检测 冗余码的计算 因此&#xff0c;余数是1110&#xff0c;传输的数为11010110111110。在传输过程中最后两位变成o&#xff0c;接收端能够发现&#xff0c;因为11010110111110除以10011余数不为0。 子网划分 暴力求解法 &#xff08;定长子网划分大量…

Linux系统程序设计--2. 文件I/O

文件I/O 标准C的I/O FILE结构体 下面只列出了5个成员 可以观察到&#xff0c;有些函数没有FILE类型的结构体指针例如printf主要是一些标准输出&#xff0c;因为其内部用到了stdin&#xff0c;stdout&#xff0c;stderr查找文件所在的位置:find \ -name stat.h查找头文件所…