WLS 的异常高 CPU 占用率3
上一篇 /
下一篇 2008-12-16 23:35:01
/ 个人分类:Weblogic
- 文件版本: V1.0
- 开发商: 本站原创
- 文件来源: 本地
- 界面语言: 简体中文
- 授权方式: 免费
- 运行平台: Win9X/Win2000/WinXP
G.E/_!XB0Linux51Testing软件测试网`"kQ&X$| V QFZ R
51Testing软件测试网v['W'|`:G
获得最顶端输出并查找与之前启动了现占用 CPU 的 WLS 的那个用户 ID 相关联的 PID。
r
ECJ
][7q0通过 kill -3 <PID> 对 WebLogic Server 进行若干 Thread Dump
qO/sCH9{R])X0将步骤 1 中的 PID 号转换为一个十六进制值。51Testing软件测试网2R,O'q`]}
(用于 Linux 的 JVM 将 Java 线程作为本地线程实现,这使每个线程成为一个独立的 Linux 进程。)51Testing软件测试网'yEW%V`P
在 Thread Dump 中搜索 nid 的值等于上一步骤中所得到的十六进制值的线程。51Testing软件测试网ONl/i-aMV
这将为您揭示造成高 CPU 占用率问题的线程。51Testing软件测试网F8j{-J q!u$`t
确定为什么在您的代码中会发生这个问题,或者,如果堆栈的最顶端输出来自 WebLogic,请与 BEA 客户支持部门联系。
e5cNs1a3i!G$k0下面是 Linux 系统中上述进程的一个示例:51Testing软件测试网1sK.^RaG`
获得 top输出并查找与之前启动了现占用 CPU 的 WLS 的那个用户 ID 相关联的 PID。
\
XF\j8m0将该号转换为一个十六进制值。
&}NK1y4{lrd0请参阅下面的 top 输出示例(这只是一个代码片断,因为对于单个 WLS 进程将启动更多的线程)。
MC,{wjUO051Testing软件测试网"HX%j4ko;V
在 Linux 中,每个线程映射到一个不同于其它 Unix 形式的进程中。
u$Dt2H8w0
t.a5Kx%m\"n0PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
5|KOJ FB7d"f0...........51Testing软件测试网1@-l1T0S~h-w*W
22962 usera 9 0 86616 84M 26780 S 0.0 4.2 0:00 java51Testing软件测试网*e!S4iU:F
...........51Testing软件测试网)YH-l0J Nd
51Testing软件测试网2^\2VLZ
如果 PID 为 22962,则十六进制值将是:0x59B2
P2Qo$`q[o0使用此十六进制值并在 Thread Dump 中查找哪个 nid 等于该值,以便从 Thread Dump 中获取正确的线程。
M7Tk;mno Ys0例如,如果 ExecuteThread 0 出现问题,则 0x59B2 将对应于该线程:51Testing软件测试网D9J:l[
R@~'U
51Testing软件测试网w JExvn7LMd!u
"ExecuteThread: '0' for queue: 'default'" daemon prio=1 tid=0x83da550 nid=0x59b2 waiting on monitorhttp://0x56138000..0x5613887051Testing软件测试网X`#R"Hl?9O&s
at java.lang.Object.wait(Native Method)
_5h R:B.N%l/x0at java.lang.Object.wait(Object.java:415)
)U:S"q/h:h0at weblogic.kernel.ExecuteThread.waitForRequest(ExecuteThread.java:146)51Testing软件测试网&Q8F oVZ*\o;h?+^
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:172)
9Hk8rh0b%Fz0
.pF Z9~U)Pi V+~0然后,您可以检查该线程以确定它正在执行的任务以及是否出现问题。
j \0b6R5jh0在上述示例中,由于该线程此时占用 0% 的 CPU,所以只显示执行此操作的进程。理想状态下,应当迅速并且连续完成全部三个步骤,以便尽可能及时地捕捉数据。这可以通过类似下面的一个简单的 shell 脚本来完成。
6U'e^7O kw9`6R@0
UND%x ^+F0#
7[SqpbN!PY*i1LT#[0# Takes an argument (PID of the WLS process) and loops three times. This will append the prstat information to a file called dump_high_cpu.txt. The thread dump information will either be in file where stdout was redirected or printed on the screen.51Testing软件测试网 FKEK;^SNf9^5tp'm
#51Testing软件测试网D-n!hkgr
51Testing软件测试网LTr5OC_,}
for loopnum in 1 2 351Testing软件测试网 T
kH q1NXK'pS
do
$S{M{S7u;OP
X
G0top -b -n1>> dump_high_cpu.txt51Testing软件测试网!k0s\s#H"g8F2g j
kill -3 $151Testing软件测试网ys:W3x"`Z ? [
echo "cpu snapshot and thread dump done. #" $loopnum
,w0wf6A*E;A0sleep 151Testing软件测试网Sua5`x
echo "Done sleeping."
O2Ijea@3a:?0done51Testing软件测试网HDT5J+^'r
相关阅读:
- 遗忘weblogic server密码的解决办法 (lgwmlx, 2008-7-14)
- 配置WebLogic Server 8.1的Node Manger和SSL (lgwmlx, 2008-7-14)
- 在linux下安装weblogic小结 (叶筱珊, 2008-7-18)
- WebLogic性能:速度不是一切 (caption, 2008-8-11)
- WebLogic Server Performance and Tuning (lgwmlx, 2008-12-16)
- BEA WebLogic平台下J2EE调优 (lgwmlx, 2008-12-16)
- WebLogic Server管理指南 (lgwmlx, 2008-12-16)
- 服务器挂起 (lgwmlx, 2008-12-16)
- weblogic高CPU的分析1 (lgwmlx, 2008-12-16)
- WLS 的异常高 CPU 占用率2 (lgwmlx, 2008-12-16)
收藏
举报
TAG:
Weblogic