Java线上应用故障排查之一:高CPU占用

一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。

以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。

 

根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。

通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题。但是,怎么定位到具体线程或者代码呢?

首先显示线程列表:

ps -mp pid -o THREAD,tid,time

 

找到了耗时最高的线程28802,占用CPU时间快两个小时了!

其次将需要的线程ID转换为16进制格式:

printf "%x\n" tid

 

最后打印线程的堆栈信息:

jstack pid |grep tid -A 30

找到出现问题的代码了!

接下来就是具体分析代码:ShortSocketIO.readBytes(ShortSocketIO.java:106)

 

最后,总结下排查CPU故障的方法和技巧有哪些:

1、top命令:Linux命令。可以查看实时的CPU使用情况。也可以查看最近一段时间的CPU使用情况。

2、PS命令:Linux命令。强大的进程状态监控命令。可以查看进程以及进程中线程的当前CPU使用情况。属于当前状态的采样数据。

3、jstack:Java提供的命令。可以查看某个进程的当前线程栈运行情况。根据这个命令的输出可以定位某个进程的所有线程的当前运行状态、运行代码,以及是否死锁等等。

4、pstack:Linux命令。可以查看某个进程的当前线程栈运行情况。

转载于:https://www.cnblogs.com/longqingyang/p/7250363.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429021.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java并发编程实战 代码bug,Java并发编程实战(1)- 并发程序的bug源头

概述并发编程一般属于编程进阶部分的知识,它会涉及到很多底层知识,包括操作系统。编写正确的并发程序是一件很困难的事情,由并发导致的bug,有时很难排查或者重现,这需要我们理解并发的本质,深入分析Bug的源…

ajax小结

转载于:https://www.cnblogs.com/infernoyy/p/7250548.html

linux mysql迁移,Linux 下安装MySQL并迁移备份

简单记录下在centOS上安装MySQL(MariaDB)的过程。这里我并没有选择特定的MySQL版本,使用的是源默认提供的版本。1. 执行安装命令:执行如下指令安装MySQL数据库。1yuminstall-ymysqlmysql-server注意这里同时安装了mysql和mysql-server。在输出一长串信息…

Asp.net--DropDownList控件绑定数据库数据

DropDownList控件绑定数据库数据:DB是公共类,reDt是公共类中的方法 放在Page_Load事件中 if (!IsPostBack){DB db new DB();DataTable dt db.reDt("select * from provinceInfo order by provinceid asc");ddlsmprovince.DataSource dt;ddl…

app推送以及提示音java,springboot 整合 Jpush 极光推送

产品简介:JPush 是经过考验的大规模 App 推送平台,每天推送消息数超过 5 亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。 JPush 全面支持 An…

C++游戏系列2:角色装备武器

很多其它见:C游戏系列文件夹 知识点:类的组合,A类的数据成员。是B类的对象,或B类的对象。做A类的数据成员    【项目-带武器的游戏角色】   设计一个武器类,其数据成员至少要有武器名、威力,还能够…

php 显示当前年月日时分秒,php 获取当前前后年、月、星期、日、时分秒的时间...

php 获取今天前后年、月、星期、日、时分秒的时间。通过设置时间戳函数strtotime()的参数获取时间。//获取当前时间echo date(Y-m-d H:i:s,strtotime(now));echo date(Y-m-d H:i:s);echo date(Y-m-d H:i:s,time());//获取5天前的时间echo date(Y-m-d H:i:s,strtotime("-5 …

Lydsy2017年4月月赛 抵制克苏恩

Description小Q同学现在沉迷炉石传说不能自拔。他发现一张名为克苏恩的牌很不公平。如果你不玩炉石传说,不必担心,小Q同学会告诉你所有相关的细节。炉石传说是这样的一个游戏,每个玩家拥有一个30 点血量的英雄,并且可以用牌召唤至…

php 判斷數據庫表是否存在,phpl判斷mysq數據庫中的某個數據表是否存在的方法總結...

注意:以下都是在ThinkPHP框架中進行測試方式1通過查詢MySQL的配置表信息//TABLE_SCHEMA:表示數據庫名 , TABLE_NAME : 表示表名$sql "SELECT count(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMAdatabase_name and TABLE_NAME…

怎样学习(3):迭代学习,精益求精

古人云「十年寒窗无人问。一举成名天下知」,这是中国古代为数不多的读书人的真实写照。大多数读书人仅仅有十年寒窗,却不见得成名。 在软件开发领域有瀑布模式的软件project方法论。它将软开发的几个过程「需求分析,概要设计,具体…

matlab宏参赛,MATLAB杯无人机大赛 | 决赛通知!

原标题:MATLAB杯无人机大赛 | 决赛通知!重磅消息——决赛通知!经过近5个多月的准备,MATLAB杯无人机比赛即将迎来精彩的决赛,来自全国10强的参赛队伍,齐聚羊城广州,美丽的中山大学,进…

action中写php函数,WordPress中add_action(将函数连接到指定action)

WordPress中add_action(将函数连接到指定action)首先说下WordPress中用的钩子,将一个函数,以一个新的动作命名,该函数就是语法:123add_action($tag,$function_to_add,$priority,$accepted_args);?>参数:$tag(字符串)(必填)$fu…

selenium之截图

selenium支持对当前页面保存截图,使用方法: driver.get_screenshot_as_file(file_path) 代码举例: ...... def get_screenshot(driver, path):保存页面截图n 0if path:passelse:path "D:\\test_data\\screenshot\\error_png.png"…

java excel类库,jExcelApi Java 操作 Excel 的类库

jExcelApi Java 操作 Excel 的类库Java Excel API(JXL)是一个成熟,开源的用来操作Excel电子表格的Java类库,支持读取,修改,写入等操作。这个项目基于GPL发布,而且对中文有很好的支持。● 支持字体、数字、日期操作● 能够修饰单元…

锤子剪刀布 (20)

时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。 输入描述…

php表格js特效,JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】

本文实例讲述了JavaScript表格隔行变色和Tab标签页特效。分享给大家供大家参考,具体如下:最近一直在看JavaScript知识,偶尔也穿插一点Jquery,感觉Jquery用起来真爽,减少了很多的代码量,而且学习也不是很高。…

PHP 递归删除目录中文件

/** * 递归删除目录中文件 * param $pathname * return bool */public static function delDir($pathname)//要删除的目录{ if(file_exists($pathname)) { if(is_file($pathname)) { unlink($pathname); } else { $dir opendir($pathn…

matlab 符号表达式 系数 小数,matlab符号表达式系数

1数学符号matlab符号表达式系数: 数学符号,缺失:matlab表达式系数2838/9数学符号归类,包含运算符号、比较符号、几何符号、代数符号、常用分数、积分等各种符号。数学符号﹢﹣/≌∽≦≧≒﹤﹥≈≡≠…

STM32视频教程《原子教你玩STM32》

源:STM32视频教程《原子教你玩STM32》转载于:https://www.cnblogs.com/LittleTiger/p/7267735.html

海豚php表格,表格选取(1.4.3+) · DolphinPHP1.5.0完全开发手册-基于ThinkPHP5.1.41LTS的快速开发框架 · 看云...

## addSelectTable(name值, 标题, 提示, 表格列头 , 表格数据, 选择内容的url])标识符:selectTable>[info]1.4.3或更高版本支持。>[danger] **注意:该功能仅1.4.3版本以上,并且授权版用户才有,普通版没有该功能**。如果您是…