linux java进程cpu,Linux下java进程CPU占用高

我的服务器信息如下:

[root@localhost ~]# uname -a

Linux localhost.localdomain 2.6.9-42.ELsmp #1 SMP Wed Jul 12

23:27:17 EDT 2006 i686 i686 i386 GNU/Linux

1、top命令查看进程当前java进程的CPU使用率,已经所占用的资源等等信息,如进程号pid。

top - 18:14:51 up 403 days, 22:27, 1

user, load average: 0.00, 0.02,

0.31 Tasks: 64

total, 1

running, 63

sleeping, 0

stopped, 0

zombie Cpu0 : 0.3%

us, 0.0% sy, 0.0% ni, 99.7%

id, 0.0% wa, 0.0%

hi, 0.0% si Cpu1 : 0.0%

us, 0.0% sy, 0.0% ni, 99.3%

id, 0.7% wa, 0.0%

hi, 0.0% si Cpu2 : 0.0%

us, 0.3% sy, 0.0% ni, 99.7%

id, 0.0% wa, 0.0%

hi, 0.0% si Cpu3 : 0.0%

us, 0.0% sy, 0.0% ni, 100.0%

id, 0.0% wa, 0.0%

hi, 0.0% si Mem: 4149144k

total, 898412k

used, 3250732k

free, 58720k

buffers Swap: 8289532k

total, 120k used, 8289412k

free, 398564k

cached PID

USER PR NI VIRT RES SHR S %CPU

%MEM TIME+ COMMAND 12509

root 25 0 2456m 358m 8108

S 1 8.8 0:33.89

java //当前CPU使用很小之前达到398

2、ps命令查看当前java进程下每个线程的线程号和CPU使用率(TOP下的CPU使用率和PS下的意义不一样,真实CPU使用以TOP为准)

[root@localhost ~]# ps -eLo pid,lwp,pcpu |

grep 12509|sort -nk

3 //查看全部线程信息并自定义以长列表输出 sort -nk

3 按数字大小第三列排列

12509 12594 0.0

12509 12595 0.0

12509 12596 0.0

12509 12597 0.0

12509 12510 0.1

12509 12546 0.1

12509 12520 0.4

12509 12519 0.5

3、输出java的各线程的使用信息

[root@localhost ~]# kill -3

12509 //默认输出是tomcat的logs下catalina.out下,也就是JVM控制台输出信息。

截取最后几行如下

"Reference Handler" daemon prio=10 tid=0x080fa000 nid=0x2edfin

Object.wait() [0x235bc000]

java.lang.Thread.State:

WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

- waiting on <0x34297e70> (a

java.lang.ref.Reference$Lock)

at java.lang.Object.wait(Object.java:485)

at

java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)

- locked <0x34297e70> (a

java.lang.ref.Reference$Lock)

"main" prio=10 tid=0x08059000 nid=0x2ed9 runnable

[0xb740b000]

java.lang.Thread.State:

RUNNABLE

at java.net.PlainSocketImpl.socketAccept(Native

Method)

at java.net.PlainSocketImpl.accept(Unknown

Source)

- locked <0x34ce5670> (a

java.net.SocksSocketImpl)

at java.net.ServerSocket.implAccept(Unknown

Source)

at java.net.ServerSocket.accept(Unknown

Source)

at

org.apache.catalina.core.StandardServer.await(StandardServer.java:431)

at

org.apache.catalina.startup.Catalina.await(Catalina.java:676)

at

org.apache.catalina.startup.Catalina.start(Catalina.java:628)

at

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at

sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at

sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown

Source)

at java.lang.reflect.Method.invoke(Unknown

Source)

at

org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

at

org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

"VM Thread" prio=10 tid=0x080f7400 nid=0x2ede runnable

//GC信息,可以查看GC占用CPU的使用率(nid为16进制,转为10进制则是上面ps -eLo

pid,lwp,pcpu | grep 12509|sort -nk

3内容中第二列的线程ID)

"GC task thread#0 (ParallelGC)" prio=10 tid=0x08060000 nid=0x2eda

runnable

"GC task thread#1 (ParallelGC)" prio=10 tid=0x08061800 nid=0x2edb

runnable

"GC task thread#2 (ParallelGC)" prio=10 tid=0x08062c00 nid=0x2edc

runnable

"GC task thread#3 (ParallelGC)" prio=10 tid=0x08064400 nid=0x2edd

runnable

"VM Periodic Task Thread" prio=10 tid=0x0811dc00 nid=0x2ee5 waiting

on condition

JNI global references: 940

Heap

PSYoungGen total 260736K, used 47834K [0xa4290000, 0xb4290000,

0xb4290000)

eden space 259328K, 18% used

[0xa4290000,0xa70c4150,0xb3fd0000)

from space 1408K, 37% used

[0xb4130000,0xb41b2798,0xb4290000)

to space

1408K, 0% used [0xb3fd0000,0xb3fd0000,0xb4130000)

PSOldGen total 1835008K, used 175050K [0x34290000, 0xa4290000,

0xa4290000)

object space 1835008K, 9% used

[0x34290000,0x3ed82a40,0xa4290000)

PSPermGen total 262144K, used 19527K [0x24290000, 0x34290000,

0x34290000)

object space 262144K, 7% used

[0x24290000,0x255a1c68,0x34290000)

//主要通过判断nid=0x2edf 来和ps -eLo pid,lwp,pcpu |

grep 12509|sort -nk 3的线程号比对,看CPU被什么占用了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值