`
lxiaodao
  • 浏览: 121276 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Linux下JAVA线程占用CPU高一点分享

阅读更多
上次分析系统中占用CPU高的问题,得到一些使用Java自身调试工具的经验,与大家分享。
(1)使用top命令找出占用cpu最高的JAVA进程PID:28174

(2)如下命令找出占用cpu最高的线程
top -Hp 28174 -d 1 -n 1
32694 root      20   0 3249m 2.0g  11m S    2  6.4   3:31.12 java           
       
28175 root      20   0 3249m 2.0g  11m S    0  6.4   0:00.06 java               
28176 root      20   0 3249m 2.0g  11m S    0  6.4   1:40.79 java               
28177 root      20   0 3249m 2.0g  11m S    0  6.4   1:41.12 java               
28178 root      20   0 3249m 2.0g  11m S    0  6.4   1:41.11 java               
28179 root      20   0 3249m 2.0g  11m S    0  6.4   1:41.33 java               
28180 root      20   0 3249m 2.0g  11m S    0  6.4   1:41.58 java               
28181 root      20   0 3249m 2.0g  11m S    0  6.4   1:40.36 java               
28182 root      20   0 3249m 2.0g  11m S    0  6.4   1:41.02 java               
28183 root      20   0 3249m 2.0g  11m S    0  6.4   1:40.96 java               
28184 root      20   0 3249m 2.0g  11m S    0  6.4   4:38.30 java               
28185 root      20   0 3249m 2.0g  11m S    0  6.4   0:00.46 java               
28186 root      20   0 3249m 2.0g  11m S    0  6.4   0:01.83 java               
28187 root      20   0 3249m 2.0g  11m S    0  6.4   0:00.00 java               
28189 root      20   0 3249m 2.0g  11m S    0  6.4   0:00.01 java               
28190 root      20   0 3249m 2.0g  11m S    0  6.4   0:49.01 java  


(3)打印占CPU最高JAVA进程28174的堆栈信息
/usr/java/jdk1.6.0_21/bin/jstack 28174 > /root/mss/41-100javathreaddump.txt


(4)占CPU最高线程32694换算成16进制到文档中寻找对应线程7fb6
"MSXMLProcessorThread" prio=10 tid=0x00002b469923a800 [color=darkred]nid=0x7fb6[/color] sleeping[0x00002b46b0200000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at com.adventnet.management.xml.MSXmlProcessor.listen(MSXmlProcessor.java:279)
        at com.adventnet.management.xml.MSXmlProcessor.run(MSXmlProcessor.java:264)
        at java.lang.Thread.run(Thread.java:619)

以上过程手工进行,虽然不如Jprofiler和java自带的可视化工具那么直观,但是能够解决问题!尤其是在不能使用远程调试工具的时候,能够提供最大的帮助。
分享到:
评论
1 楼 12278984 2014-08-14  
printf "%x\n" 49037

相关推荐

    linux服务器找到占用cpu高的java代码的办法

    2. **获取Java进程ID**:找到占用CPU高的Java进程后,记下其PID(进程ID)。例如,如果`top`输出中的进程ID是12345,那么我们可以使用`ps`命令获取更多关于该进程的信息: ``` ps -mp 12345 -o comm= ``` 3. **...

    linux下查看java进程下线程占用cpu情况

    通过以上方法,你可以深入了解Linux下Java进程及线程对CPU的占用情况,从而进行问题定位和性能优化。在实际操作中,通常会结合多个工具和方法,以便从不同角度全面分析。记得,持续监控和分析是找出问题的关键。

    用java获取CPU占用率

    首先,Java程序需要识别运行的操作系统类型,因为不同的操作系统(如Windows和Linux)提供了不同的API或系统调用来访问CPU占用信息。在提供的代码示例中,`System.getProperty("os.name")`用于获取操作系统名称,...

    CPU占用高

    这有助于我们识别占用CPU资源最多的程序。 2. **恶意软件检查**: 高CPU占用有时可能由病毒、木马或恶意软件引起。运行反病毒扫描并确保操作系统和所有软件的更新是最新的,可以防止这类问题。 3. **系统服务与...

    java监控linux cpu使用率

    本文将深入探讨如何使用Java来实现Linux下的CPU使用率监控。通过理解这个主题,开发者可以更好地掌握系统性能,及时发现并解决问题,确保服务的稳定运行。 首先,我们需要了解Linux系统中CPU使用率的基本概念。CPU...

    Linux中使用Shell脚本查看Java线程的CPU使用情况

    线上Java应用,在业务高峰期的时候经常出现CPU跑高,需要查看实时的线程占用cpu情况,下面是一个很好用的脚本,可以快速导出每个线程的占用CPU情况,结合jstack日志,排查到具体的线程类名。 一、首先获得jvm的进程...

    教你找出 运行java项目,使cpu 100%,如何排查出是哪个jar包的哪个线程导致的

    一旦找到CPU占用高的Java进程,你可以使用`jstack`工具来获取该进程的线程堆栈信息。`jstack`会输出一个包含所有线程状态的文本文件,其中第一行显示的是dump的时间,紧接着是虚拟机信息,然后列出所有线程的状态。...

    CPU 高消耗排查

    - 通过这种方式,我们可以发现某个进程内部哪个线程占用CPU最高,比如这里发现PID为5159的线程占用非常高。 #### 三、使用`jstack`进行线程堆栈分析 1. **`jstack`工具简介** - `jstack`是Java自带的一个诊断工具...

    java引起的linux服务器性能问题查找

    1. **获取线程ID**:在top命令中找到高CPU占用的线程后,记录下该线程的PID(进程ID)。 2. **导出线程堆栈**:接下来,使用`jstack`工具来获取该线程的堆栈信息。例如,如果目标线程所在的进程ID为1117,则可以执行...

    JVM---jstack分析Java线程CPU占用,线程死锁的解决

    4. **分析线程状态**:使用文本编辑器或专用工具(如Windows下的ProcessExplorer)查看生成的`cpu.txt`文件,找到CPU占用高的线程,分析其状态和调用堆栈,定位到引起高CPU占用的方法。 ### 分析线程死锁 线程死锁...

    控制cpu的占用率

    例如,如果发现某个进程占用CPU过高,可以通过阅读其源码,优化相关函数或算法,降低CPU消耗。 至于【压缩包子文件的文件名称列表】中的"cpu占用时间",这可能是某种日志文件或性能测试数据。通过分析这些数据,...

    一次因Java应用造成CPU过高的排查实践过程

    本文将深入探讨一次由于Java应用导致CPU占用过高的排查实践过程。 首先,当发现应用CPU使用率异常时,第一步是确认是否真的是计算密集型任务导致的。在大多数情况下,CPU高负荷往往是由于程序中的逻辑错误,如死...

    linux 排查cpu负载过高异常.docx

    按大写字母`P`,系统会按照CPU使用率对进程进行排序,让你快速找到占用CPU最多的进程。 例如,假设我们发现PID为10765的进程是最耗CPU的。接下来,我们需要进一步查找该进程中哪个线程导致了CPU使用率高。使用`top ...

    Linux系统中CPU占用率较高问题排查思路与解决方法

    1. 使用`top`命令,按下`Shift+p`对进程按CPU使用率进行排序,找到占用CPU最多的进程的PID(进程ID)。 2. 接下来,使用`top -H -p [进程id]`查看该进程内部的线程及其CPU使用情况,找出消耗资源最严重的线程ID。 3....

    jProfiler7 java内存分析 linux版本

    jProfiler7作为一个强大的Java性能诊断工具,对于任何Linux环境下的Java开发人员来说都是必备的。熟练掌握其使用,可以有效地提升Java应用程序的性能,减少资源浪费,防止内存泄漏,从而提高整体系统的稳定性和效率...

    JAVA分析进程占用过大原因

    本文将基于提供的信息,详细介绍如何在Linux环境下诊断并解决JAVA进程CPU占用率过高的问题。 #### 一、识别问题所在 1. **查看系统整体状况**:首先通过`top`命令来获取系统当前的整体状态,包括CPU使用情况、内存...

    嵌入式linux的Java虚拟机分析与设计

    本篇文章将深入探讨嵌入式Linux环境下Java虚拟机的分析与设计,旨在为读者提供对这一领域的全面理解。 首先,我们来了解嵌入式系统的基本概念。嵌入式系统是指用于特定功能的计算机系统,它们通常被集成到更大的...

    linux java top分析

    获取当前jvm占用CPU的线程, 分析性能问题利器。

Global site tag (gtag.js) - Google Analytics