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

标签: java 问题 linux | 发表时间:2014-02-26 01:45 | 作者:yaonianlong
出处:http://blog.csdn.net

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 查看评论

相关 [java 问题 linux] 推荐:

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

- - CSDN博客推荐文章
1.用top找到最耗资源的进程id. 2.查询最消耗资源的java进程. 3.打印java 栈 信息. 4.将耗资源的javaPID转换为16进制(5920转1720<16进制>  去百度找 :十进制转十六进制). PID 对应 堆栈中的nid(16进制). 去stack.txt 中查找nid=1720的问题.

linux xampp常见问题

- We_Get - 博客园-首页原创精华区
1.安装xampp4linux后,只能本机(http://localhost)访问,局域网内其他机器无法访问. 解答:在/opt/lampp/etc中修改httpd.conf,将Listen 80修改为Listen 本机ip地址:80 本机ip地址使用ifconfig 查看. 2.我按照1修改之后,局域网内的机器还是无法访问.

python/java操作linux系统命令

- 天朝小民 - ITeye论坛最新讨论
看来python的确是做为脚本语言来使用的话,非常的方便. 来看一个处理linux命令的脚本. #coding:utf-8 import os import commands ''' 采用os.popen(cmd)来执行命令,要获取输出,需要read()来读取 ''' cmd = 'ls -l' values = os.popen(cmd).read() #print values for v in values.split('\n'):.

甲骨文放弃Linux Java许可计划

- Paul - cnBeta.COM
 北京时间8月31日上午消息,甲骨文已经终止了2006年由Sun创立的“操作系统Java分销许可”. 这份收费许可允许Linux开发商将Sun的Java版本整合到他们的Linux发行版中.

Linux下java进程CPU占用率高-分析方法

- - Linux - 操作系统 - ITeye博客
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4%  mem:14.6%. 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用.

Java线程与Linux内核线程的映射关系

- - CSDN博客编程语言推荐文章
Linux从内核2.6开始使用NPTL (Native POSIX Thread Library)支持,但这时线程本质上还轻量级进程. Java里的线程是由JVM来管理的,它如何对应到操作系统的线程是由JVM的实现来确定的. Linux 2.6上的HotSpot使用了NPTL机制, JVM线程跟内核轻量级进程有一一对应的关系.

Java写xml文件的编码问题

- - CSDN博客推荐文章
最近项目中需要生成xml格式的配置文件,用的是 javax.xml.transform.Transformer 类中提供的transform方法,在本地执行没问题,但是一旦把工程部署到Tomcat下运行,就会出现中文乱码的现象,纠结了许久,在大神的帮助下终于解决了. 有篇文章其实已经讲的很清楚了,链接如下:.

Java String 的十大常见问题

- - ITeye博客
Java字符串经常被问到的排名前十的问题.    1、如何比较字符串. 使用 “==”  还是 “equals()”.   简单来讲,“==”比较的是引用(对象的内存地址),“equals()” 比较值是否相等. 除非你想检测两个字符串是否是同一对象,否则都用equals().   当然了解字符串池的概念更好.

java socket 长连接read阻塞问题

- - PHP & Java
1 约定发送的数据长度,比如 http的 keepAlive 就是必须依赖这个的 Content-Length. 2 设置超时的时间,根据我的经验,只有在Socket级别设置才有效. socket.setSoTimeout(100); // 如果超过100毫秒还没有数据,则抛出 SocketTimeoutException.

15个易遗忘的Java问题

- - ITeye博客
1.Java中的基本数据类型以及所占内存大小. short    2字节. float    4字节. double    8字节. char    2字节(Unicode-16).     布尔类型boolean比较特殊,尽管Java虚拟机定义了boolean类型,但虚拟机对boolean类型的支持是有限的,没有为boolean值单独设计JVM指令.