排查linux下java应用cpu占用过高
用于快速排查Java的CPU性能问题(top us值过高),自动查出运行的Java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用。
目前只支持Linux。原因是Mac、Windows的ps命令不支持列出进程的线程id,更多信息参见#33,欢迎提供解法。
PS,如何操作可以参见@bluedavy的《分布式Java应用》的【5.1.1 CPU消耗分析】一节,说得很详细:
top命令找出消耗CPU高的Java进程及其线程id:- 开启线程显示模式(
top -H,或是打开top后按H) - 按
CPU使用率排序(top缺省是按CPU使用降序,已经合要求;打开top后按P可以显式指定按CPU使用降序) - 记下
Java进程id及其CPU高的线程id 
- 开启线程显示模式(
 - 查看消耗
CPU高的线程栈:- 用进程
id作为参数,jstack出有问题的Java进程 - 手动转换线程
id成十六进制(可以用printf %x 1234) - 在
jstack输出中查找十六进制的线程id(可以用vim的查找功能/0x1234,或是grep 0x1234 -A 20) 
 - 用进程
 - 查看对应的线程栈,分析问题
 
查问题时,会要多次上面的操作以分析确定问题,这个过程太繁琐太慢了。
转自:https://github.com/oldratlee/useful-scripts/blob/master/docs/java.md#-show-busy-java-threads
排查linux下java应用cpu占用过高的更多相关文章
- Linux下java进程CPU占用率高分析方法
		
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
 - Linux下java进程CPU占用率高分析方法(一)
		
Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...
 - (转)Linux下java进程CPU占用率高-分析方法
		
Linux下java进程CPU占用率高-分析方法 原文:http://itindex.net/detail/47420-linux-java-%E8%BF%9B%E7%A8%8B?utm_source ...
 - Linux下java进程CPU占用率高-分析方法
		
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4% mem:14.6% ...
 - Linux下java进程CPU占用率高分析方法(二)
		
1. 通过 top 命令查看当前系统CPU使用情况,定位CPU使用率超过100%的进程ID:2. 通过 ps aux | grep PID 命令进一步确定具体的线程信息:3. 通过 ps -mp pi ...
 - Linux下java获取CPU、内存、磁盘IO、网络带宽使用率
		
一.CPU 使用proc文件系统,"proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接口.用户和应用程序可以通过proc得 ...
 - 记一次 Java 项目 CPU 占用久高不下故障处理
		
事件背景 公司对接了新系统,代码变动很大,项目也很急,于是在上线之后 Zabbix 不时就告警,提示 CPU 使用过载,告警消息类似如下: 一开始以为是系统停机升级,所有人都等着使用系统,导致系统处理 ...
 - java程序 cpu占用过高分析
		
linux终端下用 top命令看到cpu占用超过100%.之所以超过100%.说明cpu是多核.默认top显示的是cpu加起来的使用率,运行top后按大键盘1看看,可以显示每个cpu的使用率,top里 ...
 - 面试问题---JAVA程序CPU占用过高怎么定位
		
今天一个电话面试问了这个问题.回来查了下答案,自己也顺带操作一遍,做个记录.之前知道jstack工具可以查看线状态这些.比如死锁这些,主要是之前不知道top -H -p pid这个命令的使用,这命令可 ...
 
随机推荐
- pyqt(二) 创建第一个程序(helloworld)解决object has no attribute 'setCentralWidget'
			
1.运行Qt Creator QtCreator主界面分为了6个模式:欢迎模式.编辑模式.设计模式.Debug调试模式.项目模式和帮助模式,分别由左侧的6个图标进行切换,对应的快捷键是Ctrl + 数 ...
 - 保存 Mybatis打印的SQL日志到数据库
			
之前做项目,一般会有一张,用户操作记录的数据表,里面主要包括一些,用户请求的URL和请求参数,用以记录用户做过哪些事情.并没有以文件的形式来做记录,当然只适合于一些用户量特别少的系统. 而Mybati ...
 - Runtime-iOS运行时应用
			
本篇将会总结Rutime的具体应用实例,结合其动态特性,Runtime在开发中的应用大致分为以下几个方面(Runtime应用图): 相关文章:iOS运行时Runtime基础 一.动态方法交换:Meth ...
 - ant 打 jar 包添加 manifest.mf 文件
			
经查询 ant 有 <manifest> 任务可以创建 manifest文件(https://ant.apache.org/manual/Tasks/manifest.html) 但尝试在 ...
 - scroll事件的优化以及scrollTop的兼容性
			
scrollTop的兼容性 scroll事件,当用户滚动带滚动条的元素中的内容时,在该元素上面触发.<body>元素中包含所加载页面的滚动条. 虽然scroll事件是在window对象上发 ...
 - 前端开发 —— google chart 的使用
			
1. 引入所需的 js 库 在 <head></head>中 <script src="https://ajax.googleapis.com/ajax/lib ...
 - QT4 交叉编译
			
配置 ./configure \-prefix /usr \-no-rpath \-embedded arm \-xplatform /qws/linux-arm-gnueabi-g++ \-dept ...
 - Android App data write as file data with synchronous Demo
			
package com.android.utils; import java.io.File; import java.io.IOException; import java.io.RandomAcc ...
 - UnicodeDammit
			
UnicodeDammit 是BS内置库, 主要用来猜测文档编码. 编码自动检测 功能可以在Beautiful Soup以外使用,检测某段未知编码时,可以使用这个方法: from bs4 import ...
 - TJU Problem 1090 City hall
			
注:对于每一横行的数据读取,一定小心不要用int型,而应该是char型或string型. 原题: 1090. City hall Time Limit: 1.0 Seconds Memory ...