分享

WebLogic Server的异常高 CPU 占用率(4)

 hx99 2012-12-17

WebLogic Server的异常高 CPU 占用率(4)

时间:2009-05-21 18:30来源:dev2dev 作者: 点击:575次
AIX 执行: ps -mp WLS_PID -o THREAD 以查找正在占用 CPU 的 tid。 您应当查看CP列(表示 CPU 占用率),看其中哪些线程的此项值比较高并从中挑选一个线程。 通过执行以下命令对服务器进行 Thread Dump: kill -3
AIX
  1. 执行: ps -mp <WLS_PID> -o THREAD 以查找正在占用 CPU 的 tid。 
  1. 通过执行以下命令对服务器进行 Thread Dump:
  1. 运行: dbx -a <WLS_PID>
  1. 在 dbx 中时,运行 dbx thread命令(以列出所有线程)。
  1. 查找与您通过 ps -mp <PID -o THREAD 命令获取的 TID 匹配的行。 
  1. 在 dbx 中时,运行 dbx 命令 th info <TID>(此 TID 来自上一步骤,该步骤在 $t<NUM>后面列出号码)以获取关于该线程的信息。
  1. 从第 3 步骤的输出中,在“general”下查找“pthread_t”,并记录该十六进制号码。
  1. 非常重要说明:在 dbx 提示符下,您需要在完成操作时在 dbx 命令行键入“detach”,否则,如果您在连接到进程时只要一退出,dbx 将终止该进程!
  1. 记下“p_thread_t”输出中的十六进制值,并在 Thread Dump 中搜索其中哪个线程的“native ID”等于该值。 

    这将为您揭示造成高 CPU 占用率问题的线程。

  2. 确定为什么在您的代码中正在发生这个问题,或者,如果堆栈的最顶端输出来自 WebLogic,请与 BEA 客户支持部门联系。
下面是 AIX 系统中上述进程的一个示例:
  1. ps -mp 250076 -o THREAD 将显示以下内容:
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      -   - -

 

  1. 通过 kill -3 <WLS_PID> 进行该 WLS_PID 的 Thread Dump
  1. 检查 ps -mp <WLS_PID> -o THREAD命令所输出的信息。
注意,TID "667723" 在 CP 列中有一个高值(它达到“37”,而其它 TID 几乎为 0)。
  1. 运行 dbx -a 250076以连接到 WebLogic Server 进程。
  1. 运行 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     
 .....

 

  1. 运行 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

 

  1. 非常重要说明:在 dbx 提示符下运行“detach”以从 WebLogic 进程中分离。
  1. 记下上述“pthread_t”的数值,并用来查找 WebLogic Server 进程的 Thread Dump 中的正确线程。
  1. 从早期进行的 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 客户支持部门联系

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多