java问题导致linux负载、cpu过高如何定位
2014-02-25 17:45
921 查看
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
[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
相关文章推荐
- linux下各种格式的压缩包的压缩、解压方法
- Linux下.ko, .o, .so, .a, .la文件
- linux more命令参数及用法详解---逐页显示文件内容方便阅读
- linux fileno函数
- Linux系统安装完Qt后,Qt无法显示菜单栏问题
- linux poen函数
- 运维工程师必会的109个Linux命令
- linux rtc驱动
- linux grep命令
- 去年12月29日,红旗Linux员工在网上发出请愿书“风雨飘摇,中科红旗路在啊何方?”,又打出横幅”软件所还我核高基专项款,大股东无视职工死活“,到工信部大门口集体请愿、讨薪,闹得很不安宁。
- Linux系统手动安装rpm包依赖关系分析(以Kernel升级为例)
- 在嵌入式Linux系统中实现USB存储设备的自动挂载
- centos6.4下编译apue.h(第二版)
- 在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)
- linux 链接脚本
- Linux文件系统之hard link&symbol link
- centos初装后并没有带上rz sz的程序。需要安装: yum install lrzsz
- windows下eclipse远程连接linux上的hadoop集群
- Linux crontab 任务调度的使用
- linux进程后台运行的几种方法