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

jstack分析cpu占用100%(转)

 
阅读更多

之前用到这个,所以就mark一下,原文在 http://testing.etao.com/node/615

 

 

背景:

运行测试程序后,top命令发现某个进程(pid)占用cpu达到100%。

查看哪个线程占用最多资源:

ps mp pid -o THREAD,tid,命令查看这个进程下面的所有线程占用情况。

发现线程324占用最多。

使用jstack进行跟踪:

jstack pid 进行查看输出到临时文件

jstack 323 > test

将刚刚发现占用cpu最多的线程id(324)换算成16进制,324==》144

查看jstack 生成的文件:

下面可以看出是哪行代码导致,查看那行代码发现有死循环。跟踪解决完毕。

上面是查看cpu占用情况,举一反三,其他的相关资源分析方法应该是类似的。

这种查起问题来很有成就感,跟我们牛牛的开发学的一招以后大家也可以用起来~~~
 

后记:
测试关注的东西很多,点到面,再面到点,而开发们在技术上了解会的分析方法很多,我们在发现bug后不是直接丢给开发,fix后外围回归,而是向开发请教分析方法,得到“渔”,开发也很乐于教给我们,这样我们以后遇到类似问题就能直接进行分析,这样才能不断既提高充实自己,提高效率,并且会有很有成就感,这是一件非常快乐的事情。

分享到:
评论

相关推荐

    用jstack分析CPU占用率高的原因.zip

    用jstack分析CPU占用率高的原因 1 top -H -p pid 2 linux printf命令将10进制转换为16进制 3在jstack中找到相应的堆栈信息jstack pid grep 'nid' -C5 –color

    使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因解析

    公司的产品一直紧跟 .net core 3.0 preview 不断升级, 部署到 Linux 服务器后, 偶尔会出现某个进程CPU占用100%.  由于服务部署在云上, 不能使用远程调试; 在局域网内的Linux 服务器 或 Windows开发机上又不能重现这...

    70-Java程序CPU占用1001

    Java程序 CPU占用100%问题排查通过top确认问题进程,获得pid。根据pid查出问题线程,获得线程id,tid。通过jstack把pid的信息导出文件

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

    主要介绍了JVM---jstack分析Java线程CPU占用,线程死锁的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    记一次tomcat进程cpu占用过高的问题排查记录

    本文主要记录一次tomcat进程,因TCP连接过多导致CPU占用过高的问题排查记录。 问题描述 linux系统下,一个tomcat web服务的cpu占用率非常高,top显示结果超过200%。请求无法响应。反复重启依然同一个现象。 问题...

    jvm排查cpu占用过高的线程

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

    jstack生成的Thread Dump日志.docx

    jstack生成的Thread Dump日志.docx 系统线程状态 (Native Thread Status) 系统线程有如下状态: deadlock 死锁线程,一般指多个线程调用期间进入了相互资源占用,导致一直等待无法释放的情况。 ...

    Linux中java占用CPU过高排查.doc

    Linux系统中java进程占用cpu资源过高,分析(自用,需要私聊)

    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中...

    IBM堆内存对象分析工具

    基本上出问题就是 df、free、top,然后依次 使用jstack、jmap,具体问题具体分析。 IBM出的一款堆内存对象分析ha(heap analyser)工具,可以用来分析websphere生成的内存转储phd格式文件。 使用方法 1.下载ha457.jar ...

    线上占用CPU过高问题排查

    表象:服务挂了,CPU占用比较高,一直在百分之九十多。肯定有小伙伴会说常规操作 ,reboot一下完事儿了。其实这样吧没毛病,但是解决不了根本问题。啥也不多说。咱们先说下线上排查三板斧。就算不能解决问题也能猜个...

    【bugfix】记一次CPU飙高的排查经历

    top拿到cpu占用最高进程的进程号pid=14398 2.定位线程 top -H -p pid 特定进程中的线程 top -H -p 14398 找到最高的线程id:29230、29156、29151、29197、29240、29284、29291 转换成hex十六进制:722e、71e4、71df...

    JavaWeb在线系统问题核查

    jstack 打印占用资源较多线程代码位置 多线程问题定位:jstack快照所有线程;dump导出;使用jvisualvm分析dump文件 JVM分析:日志开启;GC日志打印;GC分析 7.服务器问题 现象:CPU使用率高;内存使用率高;...

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

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

    show-busy-java-threads

    上传到 linux线上服务器,执行 chmod -R 777 show-busy-java-threads 执行权限。 ./show-busy-java-threads 查看执行占用cpu偏高的 线程,方便我们排查定位。

Global site tag (gtag.js) - Google Analytics