WLS 的异常高 CPU 占用率3

上一篇 / 下一篇  2008-12-16 23:35:01 / 个人分类:Weblogic

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP

G.E/_!XB0Linux51Testing软件测试网`"kQ&X$| VQFZ 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。
\ X F\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|KO J 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;mnoYs0例如,如果 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)
9H k8rh0b%Fz0
.pF Z9~U)PiV+~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;^S Nf9^5tp'm
#51Testing软件测试网D-n!hkgr
51Testing软件测试网 LT r5OC_,}
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"g8F2gj
kill -3 $151Testing软件测试网y s:W3x"`Z ? [
echo "cpu snapshot and thread dump done. #" $loopnum
,w0wf6A*E;A0sleep 151Testing软件测试网Sua5`x
echo "Done sleeping."
O2Ijea@3a:?0done51Testing软件测试网 HDT5J+^'r

TAG: Weblogic

 

评分:0

我来说两句

Open Toolbar