AIX下查找占用cpu过高的java线程方法

1、首先通过topas监控可以看到当前占用CPU率较高的那个java进程,记录下进程号:1396916;
2、通过ps -mp 1396916 -o THREAD 以查找当前进程正在占用 CPU 的TID线程信息,把输出信息拷贝到文本文件中;注意查看“CP”列(表示 CPU 占用率),看其中哪些线程的此项值比较高并从中挑选出线程。
 

$ ps -mp 1396916 -o THREAD
    USER    PID    PPID      TID ST  CP PRI SC    WCHAN        F    TT BND COMMAND
  waSUSEr 1396916  446514        - A  286  60 157        *  202001      -  - /usr/was61/WebSphere/AppServer/java/bin/java -Declipse.
        -      -      -  311297 R  63 124  0        -  400000      -  - -
        -      -      -  372769 S    0  82  1 f100070f10005b40  8410400      -  - -
        -      -      -  389319 S    0  60  1 f1000100101f15d8  410400      -  - -
        -      -      -  495815 S    0  82  1 f100070f10007940  8410400      -  - -
        -      -      -  524499 S    0  82  1 f100070f10008040  8410400      -  - -
        -      -      -  573567 S    0  82  1 f100070f10008c40  8410400      -  - -
        -      -      -  929945 S    0  82  1 f10002000715d0c8  400400      -  - -
        -      -      -  942239 S    0  82  1 f100070f1000e640  8410400      -  - -
        -      -      -  991485 S  11  89  1 f100070f1000f240  8410400      -  - -
        -      -      -  999521 S    0  70  1 f100070f1000f440  8410400      -  - -
        -      -      -  1048809 S    0  82  1 f100070f10010040  8410400      -  - -
        -      -      -  1061013 R  71  60  0        -  400000      -  - -
        -      -      -  1064987 S    0  82  1 f100070f10010440  8410400      -  - -
        -      -      -  1126635 S    0  82  1 f100070f10011340  8410400      -  - -
        -      -      -  1163499 S    0  82  1 f100070f10011c40  8410400      -  - -
      -      -      -  3166517 S    0  82  1 f100070f10830540  8410400      -  - -
        -      -      -  3285305 S    0  82  1 f100070f10832240  8410400      -  - -
        -      -      -  3428667 R  74  60  0        -  400000      -  - -
        -      -      -  3441043 Z    0  70  1        -  c00001      -  - -
        -      -      -  3555589 S    0  82  1 f10002000bcab0c8  400400      -  - -
        -      -      -  3559823 S    0  82  1 f100070f10836540  8410400      -  - -
        -      -      -  3571987 S    0  82  1 f100070f10836840  8410400      -  - -
3、通过kill -3 1396916 输出ThreadDump线程执行堆栈快照信息,在/usr/was61/WebSphere/AppServer/profiles/AppSrv01/temp目录中找到类似javacore.20130219.174013.1396916.0012.txt文件,拷贝到本地;
 4、下面将PS中占用CPU率较高的这三个线程号311297、 1061013、 3428667分别转成16进制的数据(分别为4C001、103095、34513B),在JAVACORE文件中来对应查找并进行分析。

# printf "%X\n" 311297
4C001
# printf "%X\n" 1061013
103095
# printf "%X\n" 3428667
34513B
#注意%X(大写X代表16字母大写,AIX的javacore中是大写,Linux jstack是小写)
 
取4C001在javacore.20130219.174013.1396916.0012.txt中找到下面一段日志:
 
3XMTHREADINFO      "WebContainer : 36" (TID:0x0000000117C92900, sys_thread_t:0x000000011AFD19B8, state:CW, native ID:0x000000000004C001) prio=5
 4XESTACKTRACE          at sun/awt/color/CMM.cmmColorConvert(Native Method)
 4XESTACKTRACE          at sun/awt/color/ICC_Transform.colorConvert(ICC_Transform.java:888(Compiled Code))
 
取103095在javacore.20130219.174013.1396916.0012.txt中找到下面一段日志:
 3XMTHREADINFO      "WebContainer : 35" (TID:0x0000000115FF2F00, sys_thread_t:0x0000000119F4DA58, state:CW, native ID:0x0000000000103095) prio=5
 4XESTACKTRACE          at sun/awt/color/CMM.cmmColorConvert(Native Method)
 4XESTACKTRACE          at sun/awt/color/ICC_Transform.colorConvert(ICC_Transform.java:888(Compiled Code))

取34513B在javacore.20130219.174013.1396916.0012.txt中找到下面一段日志:
 
3XMTHREADINFO      "LT=3:P=496939:O=0:port=9812" (TID:0x0000000116087200, sys_thread_t:0x00000001159DF238, state:CW, native ID:0x000000000012202D) prio=5
 java.net.SocketException: Too many open files
 4XESTACKTRACE          at java/net/PlainSocketImpl.socketAccept(Native Method)
 4XESTACKTRACE          at java/net/PlainSocketImpl.accept(PlainSocketImpl.java:457(Compiled Code))
 
通过上述跟踪的结果,判定前两段跟踪代码是与图片验证码的生成有关;后一段跟踪代码是与文件句柄有关。
  

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值