java linux res很高_java问题导致linux负载、cpu过高如何定位

1.用top找到最耗资源的进程id

[root@localhost bin]# top

top - 16:56:14 up 119 days,  6:17,  7 users,  load average: 2.04, 2.07, 2.09

Tasks: 256 total,   1 running, 254 sleeping,   0 stopped,   1 zombie

Cpu(s):  5.0%us,  0.3%sy,  0.0%ni, 94.2%id,  0.4%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   8303056k total,  7368528k used,   934528k free,   515232k buffers

Swap: 16386260k total,    27312k used, 16358948k free,  4670096k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

5244 root      15   0 1940m 1.3g  10m S 205.3 15.8 260:31.88 java

7991 root      15   0  2336 1020  704 R  2.0  0.0   0:00.01 top

2.查询最消耗资源的java进程

[root@localhost bin]# top -p 5244 -H

top - 16:56:00 up 119 days,  6:17,  7 users,  load average: 2.05, 2.08, 2.09

Tasks:  67 total,   2 running,  65 sleeping,   0 stopped,   0 zombie

Cpu(s): 25.8%us,  0.2%sy,  0.0%ni, 73.4%id,  0.5%wa,  0.0%hi,  0.1%si,  0.0%st

Mem:   8303056k total,  7369024k used,   934032k free,   515220k buffers

Swap: 16386260k total,    27312k used, 16358948k free,  4670100k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

5920 root      18   0 1940m 1.3g  10m R 98.6 15.8 121:55.29 java

5925 root      25   0 1940m 1.3g  10m R 98.6 15.8 121:21.41 java

7985 root      15   0 1940m 1.3g  10m S  3.3 15.8   0:00.10 java

5246 root      15   0 1940m 1.3g  10m S  1.0 15.8   1:02.50 java

5247 root      15   0 1940m 1.3g  10m S  1.0 15.8   1:02.35 java

5248 root      15   0 1940m 1.3g  10m S  1.0 15.8   1:02.38 java

3.打印java 栈 信息

在jdk的bin下执行

[root@localhost bin]# jstack 5244 >stack.txt

4.将耗资源的javaPID转换为16进制(5920转1720<16进制>  去百度找 :十进制转十六进制)

PID 对应 堆栈中的nid(16进制)

去stack.txt 中查找nid=1720的问题

"LongTimeTask Thread" daemon prio=10 tid=0x40916400 nid=0x1720 runnable [0x412fe000]

java.lang.Thread.State: RUNNABLE

at com.zving.tk.service.CreatePaperService.createPaper(CreatePaperService.java:143)

at com.zving.tk.service.CreatePaperService.execute(CreatePaperService.java:55)

at com.zving.framework.messages.LongTimeTask.run(LongTimeTask.java:154)

5.根据具体问题查找源代码

6.同时要看一下堆的情况

在jdk的bin目录执行

jmap  - heap  5244

jmap  -histo   5244

作者:yaonianlong 发表于2014-2-25 17:45:00 原文链接

阅读:0 评论:0 查看评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值