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

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

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

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

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

1) 用户响应时间长;

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

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

二、异常高 CPU 占用率探查

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

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

探查概述

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

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

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

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

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

1Solaris 平台上探查

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

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

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

3)使用以下命令获得服务器ThreadDumpkill-3<WLSpid>

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

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

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

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

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

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

2HP-UX 平台上探查

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

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

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

2)使用以下命令获得服务器ThreadDumpkill-3<WLSpid>

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

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

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

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

3Linux 平台上探查

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

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

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

2)使用以下命令获得服务器ThreadDump:kill3<WLSpid>

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

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

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

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

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

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

4Windows 平台上探查

下载一个工具来分析线程的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)使用以下命令获得服务器ThreadDumpCtrl+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



赞(0)    操作        顶端 
arcona
注册用户
等级:少校
经验:1100
发帖:10
精华:0
注册:2015-6-1
状态:离线
发送短消息息给arcona 加好友    发送短消息息给arcona 发消息
发表于: IP:您无权察看 2016-8-1 9:17:37 | [全部帖] [楼主帖] 2  楼

学习了~感谢



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