栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

系统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获取的所有数据,以准确定位问题。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681720.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号