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

CPU占用很高排查方案

目录

思路

问题分析

解決方案


思路

  • ps aux |grep java 查看到当前java进程使用cpu、内存、磁盘的情况获取使用量异常的进程
  • top -Hp 进程pid检查当前使用异常线程的pid
  • 把线程pid变为16进制如 31695-》7bcf 然后得到Ox7bcf
  • jstack 进程的pid |grep -A200x7bcf 得到相关进程的代码

问题分析

那么如果是生产环境的话,是怎么样才能发现目前程序有问题呢?我们可以推导一下,如果线程死锁,那么线程一直在占用CPU,这样就会导致CPU一直处于一个比较高的占用率。所示我们解决问题的思路应该是:

  1. 首先查看java进程ID
  1. 根据进程 ID 检查当前使用异常线程的pid
  1. 把线程pid变为16进制如 31695-> 7bcf 然后得到0x7bcf
  1. jstack 进程的pid | grep -A20 0x7bcf 得到相关进程的代码

接下来是我们的实现上面逻辑的步骤,如下所示:

查看所有java进程 ID

jps -I

解決方案

  • 调整锁的顺序,保持一致
  • 或者采用定时锁,一段时间后,如果还不能获取到锁就释放自身持有的所有锁。

延伸阅读


IT架构系列


http://www.mrgr.cn/news/52139.html

相关文章:

  • STL-常用容器-string
  • 深度学习神经网络的7大分类
  • 特征融合篇 | YOLOv10 引入动态上采样模块 | 超过了其他上采样器
  • docker harbor
  • 引领企业数字化未来:物联网与微服务架构的深度融合之道
  • 个人用软件分析与测试笔记(待补充)
  • RTI DDS发送数据的模型
  • 基于SSM的网上拍卖平台
  • 利用ChatGPT优化毕业论文写作:高效、智能的文献管理指南
  • typora整合minio实现文件上传,全干货不多BB
  • YOLOv11改进策略【卷积层】| 引入注意力卷积模块RFAConv,关注感受野空间特征 助力yolov11精度提升
  • JsonElement 类
  • 【AI论文精读5】知识图谱与LLM结合的路线图-P3
  • AcWing 8. 二维费用的背包问题
  • STM32Cube高效开发教程<高级篇><FreeRTOS>(八)-----队列使用示例
  • C++ 算法学习——1.9 Kruskal算法
  • 数据结构(栈)
  • 第二天 Python基础语法
  • Python入门:轻松学会Python的*args和**kwargs
  • MPI程序实例:二维热传导方程(上)