时间:2009-05-21 18:30来源:dev2dev 作者: 点击:575次
AIX 执行: ps -mp WLS_PID -o THREAD 以查找正在占用 CPU 的 tid。 您应当查看CP列(表示 CPU 占用率),看其中哪些线程的此项值比较高并从中挑选一个线程。 通过执行以下命令对服务器进行 Thread Dump: kill -3
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
usera 250076 217266 - A 38 60 72 * 242011 pts/0 - /wwsl/sharedInstalls/aix/jdk130/...
- - - 315593 Z 0 97 1 - c00007 - - -
- - - 344305 S 0 60 1 f1000089c020e200 400400 - - -
- - - 499769 S 0 60 1 f1000089c0213a00 400400 - - -
- - - 540699 S 0 60 1 f100008790008440 8410400 - - -
- - - 544789 S 0 60 1 f100008790008540 8410400 - - -
- - - 548883 S 0 60 1 f100008790008640 8410400 - - -
- - - 552979 S 0 60 1 f100008790008740 8410400 - - -
- - - 565283 Z 0 60 1 - c00007 - - -
- - - 585783 S 0 60 1 f100008790008f40 8410400 - - -
- - - 589865 Z 0 80 1 - c00007 - - -
- - - 593959 S 1 60 1 f100008790009140 8410400 - - -
- - - 610365 S 0 60 1 f100008790009540 8410400 - - -
- - - 614453 S 0 60 1 f100008790009640 8410400 - - -
- - - 618547 S 0 60 1 f100008790009740 8410400 - - -
- - - 622645 S 0 60 1 f100008790009840 8410400 - - -
- - - 626743 S 0 60 1 f100008790009940 8410400 - - -
- - - 630841 S 0 60 1 f100008790009a40 8410400 - - -
- - - 634941 S 0 60 1 f100008790009b40 8410400 - - -
- - - 639037 S 0 60 1 f100008790009c40 8410400 - - -
- - - 643135 S 0 60 1 f100008790009d40 8410400 - - -
- - - 647233 S 0 60 1 f100008790009e40 8410400 - - -
- - - 651331 S 0 60 1 f100008790009f40 8410400 - - -
- - - 655429 S 0 60 1 f10000879000a040 8410400 - - -
- - - 659527 S 0 60 1 f10000879000a140 8410400 - - -
- - - 663625 S 0 60 1 f10000879000a240 8410400 - - -
- - - 667723 S 37 78 1 f1000089c020f150 400400 - - -
- - - 671821 S 0 60 1 f10000879000a440 8410400 - - -
- - - 675919 S 0 60 1 - 418400 - - -
- - - 680017 S 0 60 1 f10000879000a640 8410400 - - -
- - - 684115 S 0 60 1 f10000879000a740 8410400 - - -
- - - 688213 S 0 60 1 f10000879000a840 8410400 - - -
- - - 692311 S 0 60 1 f10000879000a940 8410400 - - -
- - - 696409 S 0 60 1 f10000879000aa40 8410400 - - -
- - - 712801 S 0 60 1 f10000879000ae40 8410400 - - -
- - - 716899 S 0 60 1 f10000879000af40 8410400 - - -
- - - 721011 S 0 60 1 f10000879000b040 8410400 - - -
- - - 725095 S 0 60 1 f10000879000b140 8410400 - - -
- - - 729193 S 0 60 1 f10000879000b240 8410400 - - -
- - - 733291 S 0 60 1 f10000879000b340 8410400 - - -
- - - 737389 S 0 60 1 f10000879000b440 8410400 - - -
- - - 741487 S 0 60 1 f10000879000b540 8410400 - - -
- - - 745585 S 0 60 1 f10000879000b640 8410400 - - -
- - - 749683 S 0 60 1 f10000879000b740 8410400 - - -
- - - 753781 S 0 60 1 f10000879000b840 8410400 - - -
- - - 757879 S 0 60 1 f10000879000b940 8410400 - - -
- - - 761977 S 0 60 1 f10000879000ba40 8410400 - - -
- - - 766075 S 0 60 1 f10000879000bb40 8410400 - - -
- - - 770173 S 0 60 1 f10000879000bc40 8410400 - - -
- - - 774271 Z 0 60 1 - c00007 - - -
- - - 778373 S 0 60 1 f10000879000be40 8410400 - - -
- - - 782467 S 0 60 1 f10000879000bf40 8410400 - - -
- - - 786565 S 0 60 1 f10000879000c040 8410400 - - -
- - - 790663 S 0 60 1 f10000879000c140 8410400 - - -
- - - 794761 S 0 60 1 f10000879000c240 8410400 - - -
- - - 798859 S 0 60 1 f10000879000c340 8410400 - - -
- - - 802957 S 0 60 1 f10000879000c440 8410400 - - -
- - - 807055 S 0 60 1 f10000879000c540 8410400 - - -
- - - 811153 S 0 60 1 f10000879000c640 8410400 - - -
- - - 815253 S 0 60 1 f10000879000c740 8410400 - - -
- - - 819357 S 0 60 1 f10000879000c840 8410400 - - -
- - - 823447 S 0 60 1 f10000879000c940 8410400 - - -
- - - 827545 S 0 60 1 f10000879000ca40 8410400 - - -
- - - 831643 S 0 60 1 f10000879000cb40 8410400 - - -
- - - 835741 S 0 60 1 f10000879000cc40 8410400 - - -
- - - 839839 S 0 60 1 f10000879000cd40 8410400 - - -
- - - 843937 S 0 60 1 f10000879000ce40 8410400 - - -
- - - 848037 S 0 60 1 f10000879000cf40 8410400 - - -
- - - 852135 S 0 60 1 f10000879000d040 8410400 - - -
- - - 856257 S 0 60 1 f10000879000d140 8410400 - - -
- - - 868527 S 0 60 1 f10000879000d440 8410400 - - -
- - - 872623 S 0 60 1 f10000879000d540 8410400 - - -
- - - 876725 S 0 60 1 f10000879000d640 8410400 - - -
通过 kill -3 <WLS_PID> 进行该 WLS_PID 的 Thread Dump
检查 ps -mp <WLS_PID> -o THREAD命令所输出的信息。
注意,TID "667723" 在 CP 列中有一个高值(它达到“37”,而其它 TID 几乎为 0)。
运行 dbx -a 250076以连接到
WebLogic Server 进程。
运行 thread 命令以列出所有本地线程。
下面只显示相关线程的一个代码片断:
thread state-k wchan state-u k-tid mode held scope function
.....
$t15 wait 0xf10000879000a140 blocked 659527 k no sys _event_sleep
$t16 wait 0xf10000879000a240 blocked 663625 k no sys _event_sleep
$t17 run running 667723 k no sys JVM_Send
$t18 wait 0xf10000879000a440 blocked 671821 k no sys _event_sleep
$t19 wait running 675919 k no sys poll
$t20 wait 0xf10000879000a640 blocked 680017 k no sys _event_sleep
.....
运行 th info 17 命令以获取关于该本地线程的必要信息:
(dbx) th info 17
thread state-k wchan state-u k-tid mode held scope function
$t17 run running 667723 k no sys JVM_Send
general:
pthread addr = 0x3ea55c68 size = 0x244
vp addr = 0x3e69e5e0 size = 0x2a8
thread errno = 2
start pc = 0x300408b0
joinable = no
pthread_t = 1011
scheduler:
kernel =
user = 1 (other)
event :
event = 0x0
cancel = enabled, deferred, not pending
stack storage:
base = 0x3ea15000 size = 0x40000
limit = 0x3ea55c68
sp = 0x3ea55054
非常重要说明:在 dbx 提示符下运行“detach”以从 WebLogic 进程中分离。
记下上述“pthread_t”的数值,并用来查找
WebLogic Server 进程的 Thread Dump 中的正确线程。
从早期进行的 Thread Dump 中,您可以将十六进制号码“1011”与 Thread Dump 中在“native ID”之后的号码进行匹配。
下面是匹配此十六进制号码并造成高 CPU 占用率问题的线程示例:
"ExecuteThread: '11' for queue: 'default'" (TID:0x31cf86d8, sys_thread_t:0x3e5ea108, state:R, native ID:0x1011) prio=5
at java.net.SocketOutputStream.socketWrite(Native Method)
at java.net.SocketOutputStream.write(SocketOutputStream.java(Compiled Code))
at weblogic.servlet.internal.ChunkUtils.writeChunkTransfer(ChunkUtils.java(Compiled Code))
at weblogic.servlet.internal.ChunkUtils.writeChunks(ChunkUtils.java(Compiled Code))
at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java(Compiled Code))
at weblogic.servlet.internal.ChunkOutput.checkForFlush(ChunkOutput.java(Compiled Code))
at weblogic.servlet.internal.ChunkOutput.write(ChunkOutput.java(Compiled Code))
at weblogic.servlet.internal.ChunkOutput.write(ChunkOutput.java(Compiled Code))
at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java(Compiled Code))
at weblogic.servlet.internal.ChunkWriter.write(ChunkWriter.java(Compiled Code))
at java.io.Writer.write(Writer.java(Compiled Code))
at java.io.PrintWriter.write(PrintWriter.java(Compiled Code))
at java.io.PrintWriter.write(PrintWriter.java(Compiled Code))
at java.io.PrintWriter.print(PrintWriter.java(Compiled Code))
at java.io.PrintWriter.println(PrintWriter.java(Compiled Code))
at examples.servlets.HelloWorldServlet.service(HelloWorldServlet.java(Compiled Code))
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1058)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:401)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:306)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:5445)
at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java(Compiled Code))
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3105)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2588)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java(Compiled Code))
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)
----- Native Stack -----
sysSend
JVM_Send
Java_java_net_SocketOutputStream_socketWrite
确定为什么在您的代码中正在发生这个问题,或者,如果堆栈的最顶端输出来自 WebLogic,请与 BEA 客户支持部门联系