[原创]异常高 CPU 占用率故障排除方法_MQ, Tuxedo及OLTP讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MQ, Tuxedo及OLTP讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 935 | 回复: 1   主题: [原创]异常高 CPU 占用率故障排除方法        下一篇 
panpan.nie
注册用户
等级:大校
经验:4759
发帖:217
精华:2
注册:1970-1-1
状态:离线
发送短消息息给panpan.nie 加好友    发送短消息息给panpan.nie 发消息
发表于: IP:您无权察看 2016-6-30 15:37:44 | [全部帖] [楼主帖] 楼主

一、异常高 CPU 占用率的故障症状

当一个进程或线程占用的 CPU 资源百分百异常高时发生,可能会是其他进程或线程丧

失或缺乏执行要求的处理任务所需的 CPU 处理能力,应进行定期检查(监视)。

异常高 CPU 占用率的故障症状:

1) 用户响应时间长;

2)  Weblogic 服务器运行速度异常缓慢;

3请求或操作开始出现超时。

 

二、异常高 CPU 占用率探查

当能够确认当前系统缓慢,是由于异常高 CPU 占用率引起的时,就需要运用下述的各

种手段进行问题定位和探查。

探查概述

首先要确定哪个(些)WebLogic 进程线程导致了异常高 CPU 占用率,做法是在发生高

占用率情况时捕捉 Thread Dump,然后找到服务器 Thread Dump 中的高占用率线程(这一

过程视所在平台而有所不同,该过程可能包括若干个步骤)

不断重复执行上述过程来确保已建立了模式并找对了线程,可以利用一次或多次

Thread Dump 探查发生异常高 CPU 占用率的具体原因。

1Solaris 平台上探查

发生异常高 CPU 占用率时,请重复这些步骤来捕捉服务器活动的快照:

1) 使用以下命令捕捉哪些线程 (LWPID) 正在使用 CPU: prstat -L -p <WLSpid>

2) 使用以下命令获得 LWPID 到(十进制)PID 的映射:pstack <WLSpid> 

3) 使用以下命令获得服务器 Thread Dump:kill -3 <WLSpid>

然后按下述方法利用收集到的输出:

1) 在 prstat 输出中找到使用率最高(最高频率条目)的 LWPID

2) 在 pstack 输出中找到该 LWPID,获得对应的线程编号;

3) 将线程编号转换为十六进制号码;

4) 在服务器 Thread Dump 中找到像“nid=<hexNum>”这样的十六进制线程编号;

5) 确定该线程执行的哪一项任务导致了异常高 CPU 占用率。

 

2HP-UX 平台上探查

可以使用比较容易下载到的,原 BEA 技术支持部门开发的 hp_prstat 使用程序,在发

生异常高 CPU 占用率时,请重复这些步骤来确定服务器活动的模式:

1) 使用以下命令捕捉那些正在使用 CPU 的线程 (LWPID):hp_prstat <WLSpid> 

2) 使用以下命令获得服务器 Thread Dump:kill -3 <WLSpid>

然后按下述方法利用收集到的输出:

1) 找到“用户时间”增加最快的一个或多个 LWPID

2) 在服务器 Thread Dump 中找到像“lwp_id=<LWPID>”这样的对应 LWPID 号码;

3) 确定该线程执行的哪一项任务导致了异常高 CPU 占用率。

 

3Linux 平台上探查

在 Linux 传统系统上,每个线程均作为独立的进程出现。

发生异常高 CPU 占用率时,请重复这些步骤来捕捉服务器活动的快照:

1) 使用 top 确定哪些线程正在使用 CPU

2) 使用以下命令获得服务器 Thread Dump: kill – 3 <WLSpid>

然后按下述方法利用收集到的输出:

1) 在 top 输出中,寻找具有启动服务器的 userID 的进程线程;

2) 获得 CPU 占用率最高的服务器线程的 PID

3) 将高占用率的 PID 转换为十六进制值;

4) 在服务器 Thread Dump 中找到十六进制 PID

5) 确定该线程执行的哪一项任务导致了异常高 CPU 占用率。

 

4Windows 平台上探查

下载一个工具来分析线程的 CPU 的占用率:pslist 可提供进程的线程详细信息。另

外,还有一个 Process Explorer 是可显示进程的动态性能统计信息的图形化工具。

发生异常高 CPU 占用率时,请重复这些步骤来确定服务器的线程活动:

1) 使用以下两种工具之一捕捉正在使用 CPU 的线程 (LWPID):pslist -d <WLSpid>

或 Process Explorer

注:下载地址: http://www.sysinternals.com/ntw2k/freeware/pslist.shtml

和 http://www.sysinternals.com/ntw2k/freeware/procexp.shtml

2) 使用以下命令获得服务器 Thread Dump:Ctrl+Break

然后按下述方法利用收集到的输出:

1) 找到“用户时间”和“内核时间”增加最快的线程;

2) 将线程编号转换为十六进制值,如<hexNum>

3) 在服务器 Thread Dump 中找到像“nid=<hexNum>”这样的十六进制线程编号;

4) 确定该线程执行的哪一项任务导致了异常高 CPU 占用率。

 

三、异常高 CPU 占用率故障排除策略及相关资源

对这类问题的故障排除策略如下:

(1)通过重复收集信息确定占用率模式:

– 捕捉 CPU 占用率高的线程或用户时间快速增加的线程的快照;

– 同时获得 Thread Dump

– 使用各平台提供的工具。

(2)在服务器的一个或多个 Thread Dump 中查找异常高 CPU 占用率线程;

(3)在 Thread Dump 中探查导致异常高 CPU 占用率的具体原因;

(4)继续监视,看是否还会发生故障。





赞(0)    操作        顶端 
联动小白
注册用户
等级:新兵
经验:61
发帖:0
精华:0
注册:2015-5-27
状态:离线
发送短消息息给联动小白 加好友    发送短消息息给联动小白 发消息
发表于: IP:您无权察看 2018-6-4 1:33:13 | [全部帖] [楼主帖] 2  楼

为了方便大家阅读,我对文章中命令来解释一下吧!

-l-->dump:-l

-p-->patch:-p

-l-->kill:-l

-p-->dump:-p

User-->id:User

-d-->dump:-d

-d-->patch:-d

-l-->patch:-l

希望能对大家有帮助!^_^ By:坚持不懈的小白

-- 来自: 北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论