文档章节

linux中找到最耗CPU的那段Java代码

laichendong
 laichendong
发布于 2014/06/25 09:27
字数 457
阅读 223
收藏 1
在这里总结一下查找linux,sun JDK环境下最耗CPU性能的java代码段的方法。基本上原理就是使用top命令查看最耗cpu的进程和线程(子进程)。使用jstack把java线程堆栈给dump下来。然后,在堆栈信息中查找出对应的代码块。具体操作如下:

一、使用top查找出最耗cpu的进程号(PID)

2013011622221320130116215224(提示:可以按shift+p来按cpu排序。) 这里我们看到最耗cpu的进程是:17315

二、使用jstack dump对应PID的堆栈信息保存备查

20130116215630 这没什么好说的。有时候需要加-F (强制选项)。另外,在jdk1.6.0.23之前,有一个bug。无法用这种方法dump下详细的堆栈信息。只有线程号。 dump下来的文件内容大概长这样:20130116220414几个比较有用的信息包括 线程名称、nid(native id, 一会儿会用到)、线程状态

三、再次使用top查出对应PID中最耗cpu的子进程(java线程)

2013011621582220130116215957top命令使用-p参数来指定进程号,-H参数来显示线程。这里可以看到最耗cpu的进程(java中的线程)是17316

四、从dump下来的堆栈信息中查找耗费性能的代码块

从上面开到,我们用top找出来的pid是十进制的。而dump下来的nid是十六进制的。其实他们是一个东西。只是进制不同。于是我们利用printf命令格式化来转换一下进制(当然,也可以用其他方式): 20130116221543   20130116221709 通过在vim中查找,就能找到问题所在了。 :D 20130116221855

好了,基本就是这样一个步骤,对于分析线上问题还是有一定帮助的。have fun!

© 著作权归作者所有

共有 人打赏支持
laichendong
粉丝 10
博文 85
码字总数 71483
作品 0
朝阳
程序员
私信 提问
Linux下如何对tomcat Java线程进行分析?

在生产环境(Linux)有什么办法知道当前某个线程的运行情况,比如是不是挂住了,是不是吃了好多cpu和内存。 以下是针对tomcat上的应用的. 其他的java程序, 只要你能触发他的thread dump并且拿到...

DongHenry
2013/09/26
0
0
Java Tomcat vs PHP CLI Server 性能对比

测试环境: Ubuntu 14.04 with i5-3230M Tomcat 8.0.5 with 64bit jre1.7.0_55 PHP 5.5.8 with Zend OPcache v7.0.3-dev 测试脚本: 显示当前服务器时间 Java Tomcat: t.jsp <%@ page session=......

eechen
2014/09/22
0
34
Java基础-环境变量设置及Java命令行使用

一、Java环境变量设置 windows 下配置JDK环境变量: 1. 安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:javajdk1.5.008; 2. 安装完成后,右击“我的电脑”,点击“属...

陶邦仁
2012/11/11
0
0
LINUX类主机JAVA应用程序占用CPU、内存过高分析手段

转载声明:本文为DBA+社群原创文章,转载必须连同本订阅号二维码全文转载,并注明作者名字及来源:DBA+社群(dbaplus)。 做为一个IT运维人员,通常在运维过程中会遇到各种各样的问题,系统问...

丁启良
2015/12/04
0
0
Ubuntu10.04中手动安装jdk6

在UBUNTU中搭建android开发环境,需要安装jdk。命令行下载特别慢,手动安装吧。 提示:最好使用root登录,不然下面第三步的移动文件夹会提示你的权限不够。 一,下载jdk安装文件:jdk-6u24-li...

拉风的道长
2012/07/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spark性能优化之道

Spark性能优化之道——解决Spark数据倾斜(Data Skew)的N种姿势 本文结合实例详细阐明了Spark数据倾斜的几种场景以及对应的解决方案,包括避免数据源倾斜,调整并行度,使用自定义Partition...

GordonNemo
8分钟前
1
0
大数据驱动业务决策,CDN实时日志重磅上线

摘要: 阿里云CDN上线了实时日志功能,打通日志服务(SLS)的能力,将CDN采集的实时日志,在小于60秒的时间内投递至日志服务,进行实时、交互式分析和报表呈现。通过CDN日志的实时分析,可以快...

阿里云官方博客
13分钟前
0
0
springCloud学习笔记系列(3)-服务容错保护:Spring Cloud Feign

Feign包含了Ribbon和Hystrix,这个在实战中才慢慢体会到它的意义,所谓的包含并不是Feign的jar包包含有Ribbon和Hystrix的jar包这种物理上的包含,而是Feign的功能包含了其他两者的功能这种逻...

快乐的小火柴
14分钟前
0
0
各种数据库数据类型差异

文本 整数 浮点数 decimal Hive数据库 create table default.foo ( a DECIMAL, -- Defaults to decimal(10,0) b DECIMAL(20), -- Defaults to decimal(20,0) c DECIMAL(9, 7), d DE......

了凡川
19分钟前
1
0
springboot中filter的用法

一、在spring的应用中我们存在两种过滤的用法,一种是拦截器、另外一种当然是过滤器。我们这里介绍过滤器在springboot的用法,在springmvc中的用法基本上一样,只是配置上面有点区别。 二、f...

xiaomin0322
37分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部