一、异常高CPU占用率的故障症状
当一个进程或线程占用的CPU资源百分百异常高时发生,可能会是其他进程或线程丧
失或缺乏执行要求的处理任务所需的CPU处理能力,应进行定期检查(监视)。
异常高CPU占用率的故障症状:
1) 用户响应时间长;
2) Weblogic服务器运行速度异常缓慢;
3) 请求或操作开始出现超时。
二、异常高 CPU 占用率探查
当能够确认当前系统缓慢,是由于异常高CPU占用率引起的时,就需要运用下述的各
种手段进行问题定位和探查。
探查概述
首先要确定哪个(些)WebLogic进程线程导致了异常高CPU占用率,做法是在发生高
占用率情况时捕捉ThreadDump,然后找到服务器ThreadDump中的高占用率线程(这一
过程视所在平台而有所不同,该过程可能包括若干个步骤)
不断重复执行上述过程来确保已建立了模式并找对了线程,可以利用一次或多次
ThreadDump探查发生异常高CPU占用率的具体原因。
1、Solaris 平台上探查
发生异常高CPU占用率时,请重复这些步骤来捕捉服务器活动的快照:
1)使用以下命令捕捉哪些线程(LWPID)正在使用CPU:prstat-L-p<WLSpid>;
2)使用以下命令获得LWPID到(十进制)PID的映射:pstack<WLSpid>;
3)使用以下命令获得服务器ThreadDump:kill-3<WLSpid>;
然后按下述方法利用收集到的输出:
1)在prstat输出中找到使用率最高(最高频率条目)的LWPID;
2)在pstack输出中找到该LWPID,获得对应的线程编号;
3)将线程编号转换为十六进制号码;
4)在服务器ThreadDump中找到像“nid=<hexNum>”这样的十六进制线程编号;
5)确定该线程执行的哪一项任务导致了异常高CPU占用率。
2、HP-UX 平台上探查
可以使用比较容易下载到的,原BEA技术支持部门开发的hp_prstat使用程序,在发
生异常高CPU占用率时,请重复这些步骤来确定服务器活动的模式:
1)使用以下命令捕捉那些正在使用CPU的线程(LWPID):hp_prstat<WLSpid>;
2)使用以下命令获得服务器ThreadDump:kill-3<WLSpid>。
然后按下述方法利用收集到的输出:
1)找到“用户时间”增加最快的一个或多个LWPID;
2)在服务器ThreadDump中找到像“lwp_id=<LWPID>”这样的对应LWPID号码;
3)确定该线程执行的哪一项任务导致了异常高CPU占用率。
3、Linux 平台上探查
在Linux传统系统上,每个线程均作为独立的进程出现。
发生异常高CPU占用率时,请重复这些步骤来捕捉服务器活动的快照:
1)使用top确定哪些线程正在使用CPU;
2)使用以下命令获得服务器ThreadDump:kill–3<WLSpid>。
然后按下述方法利用收集到的输出:
1)在top输出中,寻找具有启动服务器的userID的进程线程;
2)获得CPU占用率最高的服务器线程的PID;
3)将高占用率的PID转换为十六进制值;
4)在服务器ThreadDump中找到十六进制PID;
5)确定该线程执行的哪一项任务导致了异常高CPU占用率。
4、Windows 平台上探查
下载一个工具来分析线程的CPU的占用率:pslist可提供进程的线程详细信息。另
外,还有一个ProcessExplorer是可显示进程的动态性能统计信息的图形化工具。
发生异常高CPU占用率时,请重复这些步骤来确定服务器的线程活动:
1)使用以下两种工具之一捕捉正在使用CPU的线程(LWPID):pslist-d<WLSpid>
或ProcessExplorer;
注:下载地址:http://www.sysinternals.com/ntw2k/freeware/pslist.shtml
和http://www.sysinternals.com/ntw2k/freeware/procexp.shtml
2)使用以下命令获得服务器ThreadDump:Ctrl+Break
然后按下述方法利用收集到的输出:
1)找到“用户时间”和“内核时间”增加最快的线程;
2)将线程编号转换为十六进制值,如<hexNum>;
3)在服务器ThreadDump中找到像“nid=<hexNum>”这样的十六进制线程编号;
4)确定该线程执行的哪一项任务导致了异常高CPU占用率。
三、异常高 CPU 占用率故障排除策略及相关资源
对这类问题的故障排除策略如下:
(1)通过重复收集信息确定占用率模式:
–捕捉CPU占用率高的线程或用户时间快速增加的线程的快照;
–同时获得ThreadDump;
–使用各平台提供的工具。
(2)在服务器的一个或多个ThreadDump中查找异常高CPU占用率线程;
(3)在ThreadDump中探查导致异常高CPU占用率的具体原因;
(4)继续监视,看是否还会发生故障。
该贴被panpan.nie编辑于2015-8-5 15:26:00