`

【转】生产环境下JAVA进程高CPU占用故障排查

阅读更多

转自: http://blog.chinaunix.net/uid-10449864-id-3463151.html

 

生产环境下JAVA进程高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

将输出的信息发给开发部进行确认,这样就能找出有问题的代码。
通过最近几天的监控,CPU已经安静下来了。

分享到:
评论

相关推荐

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

    ### Java进程高CPU占用故障排查 在日常的运维与开发工作中,经常遇到Java应用出现高CPU占用的问题。这类问题不仅会影响系统的稳定性和响应速度,还可能导致服务不可用。因此,对于此类故障的快速定位和解决变得尤为...

    用java获取cpu占用

    在Java编程环境中,获取CPU占用率是常见的系统监控任务,这对于性能分析、故障排查或资源管理至关重要。要实现这一功能,通常需要利用Java提供的操作系统接口,例如Java Management Extensions (JMX) 或者 sun.misc...

    java获取各进程的信息

    在Java开发过程中,有时候我们需要监控系统资源或特定进程的状态,例如CPU使用率、内存占用情况等。这在服务器性能监控、问题排查等方面尤为重要。本文将详细介绍如何使用Sigar库来实现这些功能。 #### Sigar简介 ...

    Java线上故障排查方案.pdf

    在生产环境中,Java应用程序常见的问题主要可以从四个方面来总结:CPU占用率异常、内存泄露或溢出、磁盘空间不足以及网络连接问题。这些问题又可以进一步分为两大类: 1. **系统异常**:例如CPU占用率过高、磁盘...

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

    在某个生产环境的Java进程中,CPU占用率达到300%。首先,通过`ps -mp 2633 -o THREAD,tid,time | sort -rn`找到CPU使用率最高的线程(TID 3626)。接着,将3626转换为16进制(e18),再用`jstack 2633 | grep "e18" ...

    Jarboot 是一个强大的Java进程管理、诊断的平台,可以在线管理、监控及诊断本地和远程的Java进程.zip

    - **进程监控**:实时显示Java进程的内存使用、CPU占用、线程状态等关键指标,帮助用户了解应用的运行状况。 - **远程诊断**:支持远程连接到其他服务器上的Java进程,进行跨地域的远程管理与诊断,提升了运维的...

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

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

    在线管理监控及诊断本地和远程的Java进程源代码.zip

    5. 数据可视化:为了直观地展示Java进程的性能数据,源代码可能包含了数据可视化组件,如使用Echarts、Highcharts或D3.js等JavaScript库来创建图表,展示内存使用率、CPU占用、线程状态等信息。 6. 安全性:在线...

    线上故障排查全套路,总有一款适合你1

    可以使用`ps`找到目标进程的PID,然后使用`top -H -p pid`找出CPU占用高的线程。将PID转换为16进制后,通过`jstack pid | grep 'nid' -C5 --color`查看堆栈详情。重点关注`WAITING`和`TIMED_WAITING`状态的线程,...

    show-busy-java-threads-jvm-cpu.rar

    在Java应用程序的运行过程中,有时候会遇到JVM(Java虚拟机)CPU使用率过高的问题。这通常是由于线程执行不恰当或者...在日常开发和维护工作中,理解并熟练运用这样的工具是非常必要的,它能有效提升故障排查的效率。

    websphere cpu性能问题

    【描述】:本文将深入探讨当Websphere Application Server (WAS)出现异常高的CPU占用率时,如何识别问题源头并采取相应的故障排除措施。这涉及到对操作系统层面的数据收集、线程分析以及使用调试工具如dbx进行详细...

    计算机网络故障排查—经典

    【计算机网络故障排查—经典】 在计算机网络使用过程中,我们可能会遇到各种问题,例如能上QQ但不能上网的情况。这通常是由多种因素引起的,本文将分析并提供解决这些问题的策略。 **一、病毒感染** 当打开IE浏览...

    windows进程监控java版

    - **进程信息获取**:使用`OpenProcess`和`QueryProcessInformation`函数获取进程的详细信息,如PID、内存使用、CPU占用率等。 - **实时监控**:通过定时任务或者事件驱动机制,定期查询进程状态,实现对CPU、内存...

    07.给tomcat进程起别名.docx

    本案例中,用户在Windows环境下安装了多个Tomcat服务,遇到CPU使用率异常升高的情况,但由于多个Java进程同时运行,无法直观地识别出问题所在。为了解决这个问题,我们可以通过为Tomcat进程设置别名来区分各个实例,...

    Arthas - Java 诊断利器.docx

    启动过程中,Arthas会列出正在运行的Java进程,让你选择想要诊断的应用进程。选定后,Arthas便会在该进程中运行,准备提供各种诊断服务。 ### 监控Dashboard Arthas的监控Dashboard提供了丰富的视图,帮助开发者...

    MooInfo是OSHI 的一种可视化实现,用于查看有关系统和硬件的信息 如操作系统,进程,内存,CPU,磁盘,设备,传感器等

    2. **进程信息**:展示正在运行的进程列表,包括进程ID、名称、状态、CPU和内存使用情况等,这对于系统性能分析和故障排查很有帮助。 3. **内存状态**:提供总内存、已用内存、空闲内存等数据,以及内存分配和使用率...

    java如何获取系统CPU、内存占用

    需要注意的是,上述代码获取的是整个操作系统的CPU和内存占用,而不是仅仅针对当前运行的Java进程。如果你需要监控Java应用程序自身的内存占用,可以使用`java.lang.instrument.Instrumentation`接口或者`java.lang....

    动态显示CPU利用率

    - 故障排查:通过观察CPU利用率的变化,可以帮助定位性能问题的源头,比如某个进程异常消耗资源。 总之,动态显示CPU利用率是一个强大的工具,它能够帮助我们实时了解系统的运行状态,及时发现并解决问题,提高系统...

Global site tag (gtag.js) - Google Analytics