`

top命令找到占用CPU最高的java线程

阅读更多

上次分析系统中占用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自带的可视化工具那么直观,但是能够解决问题!尤其是在不能使用远程调试工具的时候,能够提供最大的帮助。

 

文章来源:http://lxiaodao.iteye.com/blog/1413774

分享到:
评论

相关推荐

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

    要找到占用CPU高的Java代码,我们可以采取一系列步骤来诊断和优化问题。以下是一种详细的方法: 1. **查看系统资源状态**:首先,我们需要了解当前系统资源的使用情况。可以使用`top`或`htop`命令查看CPU使用率最高...

    可以查看多线程cpu占用率的工具

    用在嵌入式linux平台上,通常busybox的top无法看到多线程应用的每个线程的cpu占用率,特地编写了这个小工具.

    70-Java程序CPU占用1001

    - **线程泄露**:检查是否存在未正确关闭的线程,它们可能一直在后台运行并占用CPU资源。 - **数据库或其他I/O操作**:确认是否因为等待I/O操作完成而导致CPU占用过高。 通过对以上步骤的分析,我们通常能够定位到...

    通过 top 和 jstack 确定哪些线程耗尽了 CPU.docx

    - 在`top -p PID -H`的输出结果中找到占用CPU最高的线程ID(十进制表示)。 - 使用`printf "0x%x\n" 线程ID`命令将其转换为十六进制格式,因为`jstack`命令需要的是十六进制的线程ID。 4. **使用 jstack -l PID ...

    topshow_top命令forWindows

    2. **进程管理**:用户可以通过"topshow"查看各个进程的资源占用情况,包括CPU、内存、线程数等,甚至可以按照这些指标排序,找出资源消耗大户,进行优化或关闭。 3. **命令行界面**:"topshow"通常在命令行环境下...

    linux top命令源代码

    Linux中的`top`命令是系统监控工具,它实时显示系统中各个进程的资源占用状况,如CPU使用率、内存使用量、虚拟内存、进程状态等。`top`命令的源代码解析可以帮助我们深入理解其工作原理,对于系统管理员和开发者来说...

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

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

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

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

    jvm排查cpu占用过高的线程

    java进程占用CPU过高常见的两种情况: 代码中有死循环或者接近死循环的操作 快速创建大量临时变量,导致频繁触发gc回收 问题解决: 1、用top命令找到cpu占用率最高的进程号是8958 top 2、top -Hp pid 命令找到该...

    Linux top 命令详解

    Linux top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器。下面详细介绍它的使用方法。 认识 top 的显示结果 ------------------- top 命令的显示...

    CPU占用高

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

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

    1. **性能监控**:使用工具如Prometheus、Grafana、JMX或操作系统的top、ps命令来实时监控CPU使用情况,找出占用CPU最高的进程或线程。 2. **日志分析**:查看应用程序日志,寻找异常行为的线索,如异常堆栈跟踪、...

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

    在开发和运维过程中,有时会遇到Java应用的性能问题,如线程CPU占用过高或者线程死锁。这时,我们就需要用到JVM提供的工具,如`jstack`,来帮助诊断和解决问题。 `jstack` 是JDK自带的一个命令行工具,它能够打印出...

    java进程高CPU占用故障排查.txt

    从给定的部分内容中可以看到,`top`命令显示PID为2633的Java进程CPU占用率为300%。这表明该进程内部存在严重的问题,导致了CPU资源的过度消耗。 2. **使用ps命令获取线程详情**: ```shell [root@localhost logs]...

    CPU 高消耗排查

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

    控制cpu的占用率

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

    java实战CPU占用过高问题的排查及解决

    在排查过程中,我们可以使用 top 命令来查看进程的 CPU 占用情况,並使用 ps 命令来获取线程信息。然后,我们可以将线程 ID 转换为 16 进制格式,以便更好地分析线程的堆栈信息。在打印线程的堆栈信息时,我们可以...

    Linux CPU占用率高故障排查.docx

    使用 top 命令可以查看当前系统各线程占用率,格式为:top -d 1 五、问题三:究竟是 lte_oam 哪个线程? 使用 strace 命令可以跟踪进程的系统调用,格式为:strace -p <进程号> 使用 perf 命令可以分析进程的调用...

    CPU占用率测试工具

    2. 分析:通过观察哪个进程占用CPU最多,可以定位导致系统性能下降的原因。 3. 调优:针对高CPU占用的进程,可以尝试优化代码,减少不必要的计算,或者调整系统设置以降低其对CPU的依赖。 4. 报告:记录一段时间内的...

Global site tag (gtag.js) - Google Analytics