解决过程:
1,根据top命令,找出占用cpu高的java进程。本例中发现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
将输出的信息发给开发部进行确认,这样就能找出有问题的代码
原文出处:
http://blog.chinaunix.net/uid-10449864-id-3463151.html
相关推荐
### Java进程高CPU占用故障排查 在日常的运维与开发工作中,经常遇到Java应用出现高CPU占用的问题。这类问题不仅会影响系统的稳定性和响应速度,还可能导致服务不可用。因此,对于此类故障的快速定位和解决变得尤为...
在Java编程环境中,获取CPU占用率是常见的系统监控任务,这对于性能分析、故障排查或资源管理至关重要。要实现这一功能,通常需要利用Java提供的操作系统接口,例如Java Management Extensions (JMX) 或者 sun.misc...
在Java开发过程中,有时候我们需要监控系统资源或特定进程的状态,例如CPU使用率、内存占用情况等。这在服务器性能监控、问题排查等方面尤为重要。本文将详细介绍如何使用Sigar库来实现这些功能。 #### Sigar简介 ...
- **进程监控**:实时显示Java进程的内存使用、CPU占用、线程状态等关键指标,帮助用户了解应用的运行状况。 - **远程诊断**:支持远程连接到其他服务器上的Java进程,进行跨地域的远程管理与诊断,提升了运维的...
在某个生产环境的Java进程中,CPU占用率达到300%。首先,通过`ps -mp 2633 -o THREAD,tid,time | sort -rn`找到CPU使用率最高的线程(TID 3626)。接着,将3626转换为16进制(e18),再用`jstack 2633 | grep "e18" ...
1. **线程级CPU利用率显示**:ProcExp 可以展示每个进程内的所有线程以及它们各自的CPU占用率,这对于定位高CPU使用率的问题至关重要。你可以看到哪个线程正在消耗最多的处理器资源,从而针对性地进行问题排查。 2....
1. **系统异常**:例如CPU占用率过高、磁盘空间100%满、系统可用内存过低等。 2. **业务异常**:如服务运行一段时间后自动退出、服务间调用耗时过长、多线程并发处理时出现问题、线程死锁等。 #### 三、如何定位...
【描述】:本文将深入探讨当Websphere Application Server (WAS)出现异常高的CPU占用率时,如何识别问题源头并采取相应的故障排除措施。这涉及到对操作系统层面的数据收集、线程分析以及使用调试工具如dbx进行详细...
5. 数据可视化:为了直观地展示Java进程的性能数据,源代码可能包含了数据可视化组件,如使用Echarts、Highcharts或D3.js等JavaScript库来创建图表,展示内存使用率、CPU占用、线程状态等信息。 6. 安全性:在线...
在Java应用程序的运行过程中,有时候会遇到JVM(Java虚拟机)CPU使用率过高的问题。这通常是由于线程执行不恰当或者...在日常开发和维护工作中,理解并熟练运用这样的工具是非常必要的,它能有效提升故障排查的效率。
- **进程信息获取**:使用`OpenProcess`和`QueryProcessInformation`函数获取进程的详细信息,如PID、内存使用、CPU占用率等。 - **实时监控**:通过定时任务或者事件驱动机制,定期查询进程状态,实现对CPU、内存...
需要注意的是,上述代码获取的是整个操作系统的CPU和内存占用,而不是仅仅针对当前运行的Java进程。如果你需要监控Java应用程序自身的内存占用,可以使用`java.lang.instrument.Instrumentation`接口或者`java.lang....
6. **`strace`和`gdb`**:对于进程的调试和故障排除,`strace`在Linux中用于跟踪系统调用和信号,揭示进程如何与内核交互。`gdb`(GNU调试器)是一个强大的程序调试工具,可以对运行中的进程进行单步调试,查看变量...
启动过程中,Arthas会列出正在运行的Java进程,让你选择想要诊断的应用进程。选定后,Arthas便会在该进程中运行,准备提供各种诊断服务。 ### 监控Dashboard Arthas的监控Dashboard提供了丰富的视图,帮助开发者...
2. **进程信息**:展示正在运行的进程列表,包括进程ID、名称、状态、CPU和内存使用情况等,这对于系统性能分析和故障排查很有帮助。 3. **内存状态**:提供总内存、已用内存、空闲内存等数据,以及内存分配和使用率...
在IT运维过程中,特别是在服务器管理...通过以上措施,我们可以有效地对多个Tomcat实例进行区分,当遇到性能问题时,能够快速定位到具体是哪个Tomcat实例导致的CPU使用率过高,从而更有效地进行故障排查和资源优化。
- 故障排查:通过观察CPU利用率的变化,可以帮助定位性能问题的源头,比如某个进程异常消耗资源。 总之,动态显示CPU利用率是一个强大的工具,它能够帮助我们实时了解系统的运行状态,及时发现并解决问题,提高系统...
可以使用`ps`找到目标进程的PID,然后使用`top -H -p pid`找出CPU占用高的线程。将PID转换为16进制后,通过`jstack pid | grep 'nid' -C5 --color`查看堆栈详情。重点关注`WAITING`和`TIMED_WAITING`状态的线程,...
《企业级IT运维之WebLogic实战-第13章》主要关注的是在企业环境中WebLogic服务器遇到的一个常见问题——异常高CPU占用率故障。WebLogic是Oracle公司开发的一款企业级Java应用服务器,它广泛用于部署和管理Java EE...