系统CPU占用率异常高故障排查方法

系统CPU占用率异常高故障排查方法,第1张

系统CPU占用率异常高故障排查方法

排查策略概述

CPU占用率异常高情况时,捕捉CPU占用率的线程快照,同时获取ThreadDump,通过一个或多个ThreadDump中查找CPU占用率高的线程,再分析CPU占用率高的具体原因。

排查方案(针对不同平台)

一、Linux平台

CPU占用率异常高时,可重复一下步骤来捕获服务器的线程快照

步骤1:使用top命令获取那些进程正在使用CPU

步骤2: 使用ps –ef | grep weblogic获取对应CPU占用率高的Weblogic进程

步骤3:使用top –H –p 捕获Weblogic进程的线程快照

步骤4:使用kill -3 获取ThreadDump

步骤5:快速、重复依次执行步骤3和步骤4,频率每隔5秒执行一次,至少执行三次,5分钟执行一次,十分钟执行一次。

步骤6:分析步骤5收集到的数据

  1. 通过步骤3捕获的WLS进程的线程快照,获得CPU占用率高的线程PID,分析PID:18174为例,其占用57%CPU资源
  2. 将CPU高占用率PID:18174转换为十六进制46FE
  3. 在步骤4获取的ThreadDump中找到nid=0x46FE的线程 
  4. 分析该线程栈信息,确定在做什么任务导致CPU高占用率。----此步骤需要分析步骤5获取的所有数据,以准确定位问题

二、AIX平台

CPU占用率异常高时,可重复一下步骤来捕获服务器的线程快照

步骤1:使用topas命令获取那些进程正在使用CPU

步骤2: 使用ps –ef | grep weblogic获取对应CPU占用率高的Weblogic进程

步骤3:使用ps –mp –o THREAD捕获Weblogic进程的线程快照,从快照中可以找到CPU值高的线程。

步骤4:使用kill -3 获取ThreadDump(即javacore文件)

步骤5:快速、重复依次执行步骤3和步骤4,频率每隔5秒执行一次,至少执行三次,5分钟执行一次,十分钟执行一次。

步骤6:分析步骤5收集到的数据

 1.通过步骤3捕获的WLS进程的线程快照,获得CPU占用率高的线程PID,如下图所示,红框处的三个线程已占用300%的CPU资源

2.将CPU高占用率三个线程PID转换为十六进制

3.在步骤4获取的ThreadDump的javacore中找到对应native ID的三个线程

3XMTHREADINFO "Thread-82" (TID:0x381E9300, sys_thread_t:0x381A2854, state:CW, native ID:0x0018400D) prio=5
3XMTHREADINFO "Thread-83" (TID:0x381E8F00, sys_thread_t:0x381A25B8, state:CW, native ID:0x0018C01D) prio=5
3XMTHREADINFO "Thread-84" (TID:0x38186700, sys_thread_t:0x380CAF1C, state:CW, native ID:0x00186013) prio=5


4.分析该线程栈信息,确定在做什么任务导致CPU高占用率。----此步骤需要分析步骤5获取的所有数据,以准确定位问题。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5682297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存