`
qianxingchuan
  • 浏览: 4535 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

查找CPU占用高的那个线程

阅读更多
问题描述:
生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。

问题分析:
1,程序属于CPU密集型,和开发沟通过,排除此类情况。
2,程序代码有问题,出现死循环,可能性极大。

问题解决:
1,开发那边无法排查代码某个模块有问题,从日志上也无法分析得出。
2,记得原来通过strace跟踪的方法解决了一台PHP服务器CPU占用高的问题,但是通过这种方法无效,经过google搜索,发现可以通过下面的方法进行解决,那就尝试下吧。

解决过程:
1,根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。

2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
[root@localhost logs]# ps -mp 2633 -o THREAD,tid,time | sort -rn

显示结果如下:
USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
root     10.5  19    - -         -      -  3626 00:12:48
root     10.1  19    - -         -      -  3593 00:12:16

找到了耗时最高的线程3626,占用CPU时间有12分钟了!

将需要的线程ID转换为16进制格式:
[root@localhost logs]# printf "%x\n" 3626
e18

最后打印线程的堆栈信息:
[root@localhost logs]# jstack 2633 |grep e18 -A 30


通过输出的信息就能找出有问题的代码。
分享到:
评论

相关推荐

    ProcessExplorer(线程cpu占用率工具)

    而ProcessExplorer的独特之处在于,它可以显示每个进程内部线程的CPU使用情况,这对于排查高CPU占用问题或者性能优化至关重要。通过ProcessExplorer,用户可以一目了然地观察到哪个线程正在消耗大量的计算资源,从而...

    专题--服务器CPU使用率高的原因分析与解决办法

    2. 超线程:超线程可能导致 CPU 使用率占用高。 解决办法:卸载天网防火墙或在 BIOS 中关闭超线程功能。 3. 硬件配置不合理:例如内存不足、电源功率不足等。 解决办法:检查硬件配置是否合理,确保内存和电源...

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

    此外,可以利用`top -Hp PID`来查看指定进程内的线程资源使用情况,这可以帮助你更精确地定位到是哪个线程导致了CPU占用率高。配合`PressureTest.java17`这个位置的代码审查,你将能够找出问题的原因。 如果你对`...

    【原创】java程序cpu占用过高问题分析

    在Java编程中,CPU占用过高是一个常见的性能问题,可能由多种因素引起,包括但不限于不当的算法选择、线程过多、循环优化不足、垃圾回收(GC)问题、内存泄漏或资源竞争等。这篇原创博客“【原创】java程序cpu占用过...

    CPU 高消耗排查

    - 通过`top`命令,我们可以观察到CPU使用率最高的进程,以及它们所占用的资源百分比等信息。 2. **深入分析某个特定进程的CPU消耗** - 使用`top`时可以通过参数`-p`来关注特定进程的CPU使用情况,例如:`[root@3...

    易语言CPU优化

    可以使用系统自带的性能监视器或者第三方工具,如Visual Studio的性能分析器,来监控程序运行时的CPU占用情况,以便定位瓶颈并针对性地优化。 总之,易语言CPU优化涉及代码编写、数据结构、算法选择等多个层面,...

    windows下查看线程的cpu占用率工具 procexp

    1. **线程级CPU利用率显示**:ProcExp 可以展示每个进程内的所有线程以及它们各自的CPU占用率,这对于定位高CPU使用率的问题至关重要。你可以看到哪个线程正在消耗最多的处理器资源,从而针对性地进行问题排查。 2....

    Java进程CPU使用率高排查

     2.jstack pid >> java.txt 导出CPU占用高进程的线程栈。  3.top -H -p PID 查看对应进程的哪个线程占用CPU过高。  4.echo “obase=16; PID” | bc 将线程的PID转换为16进制。  5.在第二步导出的Java.txt中...

    70-Java程序CPU占用1001

    通过输入`top`命令,我们可以看到各个进程的CPU和内存使用率,从中找出CPU占用率最高的Java进程。记下该进程的PID(进程ID)。 2. **获取问题线程的TID** 接下来,我们需要找出这个进程中的具体哪个线程导致了CPU...

    查看指定进程的cpu和内存使用情况

    在操作系统管理计算机资源时,进程是...定期检查高CPU或内存使用率的进程,有助于发现可能导致系统性能下降或不稳定的问题,并及时采取措施进行解决。这是一项基本的系统管理技能,对于任何使用电脑的人都有其价值。

    06系统的CPU使用率很高但为啥却找不到高CPU?1

    在IT领域,尤其是在服务器性能优化方面,经常遇到的问题之一就是CPU使用率过高。标题和描述中提到的情况,即系统CPU使用率很高,但找不到明显的高CPU应用,这通常需要更深入的诊断技巧来解决。本案例主要涉及Linux...

    获取CPU使用率

    1.QQ:513187410 2.保证无毒 3.简单,方便,实用 4.实例可以自行改用 5.如有非法,本人无法律责任,由改动代码人负责! 6.需要更多本人作品,查找标签“朱建强” 7.请下载,杀毒后再使用!

    websphere cpu性能问题

    1. 使用`ps -mp <WAS_JAVA_PID> -o THREAD`查找占用CPU的线程ID(tid),关注"CP"列,这里显示了CPU使用率。 2. 通过发送信号`kill -3 <WAS_JAVA_PID>`触发服务器进行Thread Dump,这将提供当前所有线程的状态信息。...

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

    - 运行此命令后,会列出该进程中所有线程的CPU使用率,从中找出占用CPU最高的线程。 3. **依据线程 ID(需要十进制转成十六进制),从线程栈中找出步骤2查出的线程** - 在`top -p PID -H`的输出结果中找到占用...

    CPU实用率过高解决办法

    6. **病毒扫描**:恶意软件和病毒也可能导致CPU占用率过高。运行反病毒软件进行全面扫描,并清除任何发现的威胁。 7. **优化启动项**:减少开机启动的程序数量可以减轻系统负担。在系统设置中管理启动项,移除不必...

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

    2. **检查程序代码**:针对高CPU占用的线程,需要仔细审查相关代码逻辑,查找可能存在的问题。例如,是否存在不合理的循环结构、是否有对数据库或外部服务的高频率访问等。 3. **监控JVM参数**:使用工具如`jstat`或...

    分析tomcat占用cpu高的原因

    3. **代码审查**:对代码进行审查,查找可能引起CPU占用高的地方,优化算法和数据结构。 4. **调整配置**:优化Tomcat和JVM的配置,如增大堆内存、选择合适的垃圾收集器、调整线程池大小等。 5. **硬件升级**:...

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

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

    C# 关于监测CPU,内存等资源耗费的代码(原码)

    在C#编程中,监测和管理系统的CPU使用率和内存消耗是至关重要的任务,尤其是在开发高性能的应用程序时。本文将详细解析如何使用C#来实现这一功能,主要涉及的类库是System.Diagnostics命名空间,包括...

Global site tag (gtag.js) - Google Analytics