之前用到这个,所以就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占用率高的原因 1 top -H -p pid 2 linux printf命令将10进制转换为16进制 3在jstack中找到相应的堆栈信息jstack pid grep 'nid' -C5 –color
使用 jstack 定位分析 CPU 消耗问题 在实际生产环境中,CPU 占用率过高的问题经常会出现,特别是在高并发情况下。使用 jstack 工具可以帮助我们快速定位 CPU 消耗问题的根源。本文将详细介绍使用 jstack 工具定位...
在Java开发过程中,有时会遇到项目运行时CPU占用率达到100%的问题,这可能是由于某个线程的无限循环、阻塞或者资源消耗过大导致的。以下是一套详细的排查步骤来帮助你找出是哪个jar包的哪个线程造成了这个问题。 ...
公司的产品一直紧跟 .net core 3.0 preview 不断升级, 部署到 Linux 服务器后, 偶尔会出现某个进程CPU占用100%. 由于服务部署在云上, 不能使用远程调试; 在局域网内的Linux 服务器 或 Windows开发机上又不能重现这...
- **CPU占用高的线程**:找出CPU占用率较高的线程,分析其堆栈轨迹,看是否有无谓的循环或计算密集型操作。 - **等待时间过长的线程**:长时间等待I/O或其他资源的线程可能成为性能瓶颈,需要优化其等待策略。 - *...
【MySQL面试第二弹】面试中遇到MySQL服务CPU占用100%的问题,是数据库性能优化领域常见的挑战。解决这个问题需要一套系统的排查流程。首先,我们要理解CPU飙升的原因可能包括内存管理、代码执行效率、锁机制的不当...
此时,我们需要确定哪些服务进程导致了CPU过载,进而定位到具体是哪个线程及哪段代码导致了CPU占用过高。 #### 三、定位步骤详解 ##### 步骤一:找到最耗CPU的进程 **工具:top** 1. **命令执行**:首先使用`top...
在Java编程环境中,当遇到"Java程序CPU占用100%"的问题时,这通常意味着程序中存在性能瓶颈或者死循环,导致CPU资源被过度消耗。为了解决这个问题,我们需要进行一系列的诊断步骤来定位问题所在。以下是详细的排查...
4. **分析线程状态**:使用文本编辑器或专用工具(如Windows下的ProcessExplorer)查看生成的`cpu.txt`文件,找到CPU占用高的线程,分析其状态和调用堆栈,定位到引起高CPU占用的方法。 ### 分析线程死锁 线程死锁...
这篇原创博客“【原创】java程序cpu占用过高问题分析”探讨了如何识别和解决这些问题。 首先,分析CPU占用过高的第一步是获取性能数据。这通常通过Java的JMX(Java Management Extensions)或者监控工具如VisualVM...
通过进一步分析,发现该进程中的多个线程均出现了异常高的CPU占用情况。 #### 二、故障初步定位 1. **使用top命令查看CPU占用情况**: ```shell [root@localhost logs]# top -p 2633 ``` 该命令可以显示指定...
通过使用`top`和`jstack`这两个工具,我们可以有效地定位到造成CPU资源过度消耗的线程,进而深入分析问题的根本原因。在实际操作过程中,还需要结合具体的应用场景和业务逻辑来综合判断问题所在,从而采取有效的优化...
Java 实战 CPU 占用过高问题的排查及解决 在 Java 应用程序中,CPU 占用过高是一个常见的问题,可能会导致服务器崩溃或应用程序崩溃。因此,快速定位和解决 CPU 占用过高问题是非常重要的。本文将分享 Java 实战 ...
8. **第三方库问题**:有些第三方库可能存在CPU密集型操作,如加密解密、图形处理等,未优化的库可能导致CPU占用过高。 9. **JVM优化不当**:JVM的默认配置可能并不适用于所有场景,如错误的垃圾收集器选择、新生代...
4. **分析JStack日志**:打开`jstack.log`,寻找CPU占用率高的线程。线程堆栈中显示的调用路径就是当前正在执行的代码路径。如果某个线程的堆栈中有很多重复的调用,那很可能就是问题所在。 5. **代码审查**:根据`...
- 通过分析`cpu1128.log`中的信息,可以找出占用CPU较高的线程正在执行的任务,进而判断其是否正常工作或是存在性能瓶颈。 #### 四、进一步分析线程 1. **转换线程ID为十六进制格式** - 在某些情况下,我们可能...
在Java编程环境中,当遇到“Java进程CPU占用率高”的问题时,这通常意味着Java应用程序在执行过程中消耗了大量计算资源,可能导致系统响应变慢,甚至出现性能瓶颈。本篇文章将深入探讨这个问题,并提供相关解决方案...
3. **分析线程占用情况**:接下来,需要更细致地分析线程级别的CPU占用情况。 - 运行`top -Hp -d 1 -n 1`命令,该命令可以显示每个进程中所有线程的CPU占用情况。这样可以帮助我们找出具体的线程ID,进而定位到问题...