自学内容网 自学内容网

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架构系列


原文地址:https://blog.csdn.net/qq_30621637/article/details/143014758

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!