http://my.oschina.net/shipley/blog/520062

一、背景:

先执行一个java程序里面开了两个线程分别都在while循环做打印操作。

1
# java -cp ./test-threads.jar com.spiro.Main

二、现象:

通过top命令查看当前CPU情况

可以看到有个java进程占用CPU过高,下面来排查是什么线程的什么代码导致CPU过高。

三、步骤

先获得PID为2023,上图可以看到,或者通过jps命令获取。 执行以下命令:

1
# top -H -p2023

说明: -H 指显示线程,-p 是指定进程

结果:

可以看到两个CPU占用较高的线程,记下PID 2033和2034 ( 此处的PID即为线程ID标识) ,将其从十进制转成十六进制表示,可通过windows自带的计算器来转。得到结果分别为7f1和7f2

再通过jstack命令获取当前线程栈,可暂时保存到一个文件tempfile.txt中;

1
# jstack -l 2023 > tempfile.txt

在tempfile.txt中查找nid=0x7f1的线程:

可以看到我们找到的线程Thread-0,以及该线程的状态和正在执行的代码行,本例中显示当前正在执行Worker类的15行。然后可去代码中查看不合理的逻辑

四、总结

该方法很有用,多次使用该方法定位出程序中的性能问题,在此分享和记录。

【转】关于JVM CPU资源占用过高的问题排查的更多相关文章

  1. linux--关于JVM CPU资源占用过高的问题排查

    一.背景: 先执行一个java程序里面开了两个线程分别都在while循环做打印操作. # java -cp ./test-threads.jar com.spiro.Main 二.现象: 通过top命 ...

  2. JVM的CPU资源占用过高问题的排查

    互联网后端架构 https://mp.weixin.qq.com/s/LiqAy2DikbmZzqogb5XRdA JVM的CPU资源占用过高问题的排查 互联网后端架构  今天 上午线上某应用的一台J ...

  3. 一个线上JVM的CPU资源占用过高问题的排查

    原文:https://www.iteye.com/blog/tyrion-2293369 上午线上某应用的一台JVM的CPU占比突然飙高到192%,并且一直下不来,导致监控一直告警,好久没处理这种问题 ...

  4. Android While 循环导致的资源占用过高进而导致程序崩溃问题

    Timeline: Activity_launch_request time:6562004-14 15:31:25.347: I/dalvikvm(3483): Total arena pages ...

  5. 【原创】面向对象版本地CPU资源占用监控脚本

    前期准备: 1.python2.7环境 2.相关第三方库下载安装 脚本工作过程: 1.根据输入的进程名判断进程是否存在,如果不存在则进行等待,直到检测到进程PID,中途进程退出抛出异常,键入enter ...

  6. java 一次CPU占用过高问题的排查及解决

    最近一段时间  某台服务器上的一个应用总是隔一段时间就自己挂掉      用top看了看  从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID ...

  7. linux中Java项目占用cpu、内存过高时的排查经历

    一.使用top命令查看占用高资源的java项目的进程ID(pid): top 二.查看该进程中的线程所占用资源的情况:top -Hp pid 三.查看该线程对应的16进制:printf %x 1112 ...

  8. 历史执行Sql语句性能分析 CPU资源占用时间分析

    SELECT     HIGHEST_CPU_QUERIES.PLAN_HANDLE,     HIGHEST_CPU_QUERIES.TOTAL_WORKER_TIME,     Q.DBID,   ...

  9. 记一次用arthas排查jvm中CPU占用过高问题

    记一次使用arthas排查jvm中CPU占用过高问题.这工具屌爆了 碾压我目前使用的全部JVM工具. 安装 小试 curl -O https://arthas.aliyun.com/arthas-bo ...

随机推荐

  1. Function.prototype.toString

    语法:fn.toString(indentation) 改方法返回当前函数源代码的字符串,而且还可对此字符串进行操作,比如: function num(){ }; var str = num.toSt ...

  2. Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical

    http://julialang.org/ julia | source | downloads | docs | blog | community | teaching | publications ...

  3. C#版考题

    某软件大赛C#版考题整理——[单选题]   一.单选题(10小题共20.0分) 1. 以下JavaScript代码的正确输出结果是:(). 1 2 3 4 5 6 7 8 9 <script t ...

  4. hadoop集群的搭建与配置(1)

    前言             首先hadoop是在linux系统上进行搭建的,我们首先要在自己电脑上装上虚拟机然后装linux系统,因为我们是测试:在本地虚拟机上装两个linux分别搭建好hadoop ...

  5. E-mail Composition and Decoding

    一.邮件涉及协议及本文说明1. 协议 SMTP(Simple Mail Transfer Protocal) 简单邮件传输协议,用于发送邮件. MIME(Mutipurpose Internet Ma ...

  6. [转]在 Mac OS X上编译 libimobiledevice 的方法

    link: http://blog.boceto.fr/2012/05/05/libimobiledevice-for-macosx/ The objective of the day: Compil ...

  7. VS2012的安装项目只能用InstallShield Limited Edition

    [吐槽]VS2012的安装项目只能用InstallShield Limited Edition[附资源下载]   以前版本的Visual Stuido中安装项目都可以使用微软自家的Visual Stu ...

  8. 分布式EventBus的Socket实现 - 发布订阅

    分布式EventBus的Socket实现 - 发布订阅 在这篇文章中,EventBus实现 - 发布订阅 - XML加载 所适用的范围只是本机的事件传播,要是牵涉到多台服务器之间的事件传播就不行了,解 ...

  9. WPF刷新界面之坎坷路

    WPF刷新界面之坎坷路 项目需要一个硬件检测功能,需要用到界面刷新,刚开始想用个定时器,对检测过的硬设定时添加后刷新界面. 但是很遗憾,定时器并不能进行刷新.后台检测List数据里面已经添加了很多了很 ...

  10. 实战 ASP.NET MVC Web API

    实战 ASP.NET MVC Web API Web API 框架基于 ASP.NET MVC 框架开发,是一个面向 Http 协议的通信框架.相对于 WCF 而言,Web API 只面向于 Http ...