问题描述:
生产环境下的某台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使用情况,这对于排查高CPU占用问题或者性能优化至关重要。通过ProcessExplorer,用户可以一目了然地观察到哪个线程正在消耗大量的计算资源,从而...
2. 超线程:超线程可能导致 CPU 使用率占用高。 解决办法:卸载天网防火墙或在 BIOS 中关闭超线程功能。 3. 硬件配置不合理:例如内存不足、电源功率不足等。 解决办法:检查硬件配置是否合理,确保内存和电源...
此外,可以利用`top -Hp PID`来查看指定进程内的线程资源使用情况,这可以帮助你更精确地定位到是哪个线程导致了CPU占用率高。配合`PressureTest.java17`这个位置的代码审查,你将能够找出问题的原因。 如果你对`...
在Java编程中,CPU占用过高是一个常见的性能问题,可能由多种因素引起,包括但不限于不当的算法选择、线程过多、循环优化不足、垃圾回收(GC)问题、内存泄漏或资源竞争等。这篇原创博客“【原创】java程序cpu占用过...
- 通过`top`命令,我们可以观察到CPU使用率最高的进程,以及它们所占用的资源百分比等信息。 2. **深入分析某个特定进程的CPU消耗** - 使用`top`时可以通过参数`-p`来关注特定进程的CPU使用情况,例如:`[root@3...
可以使用系统自带的性能监视器或者第三方工具,如Visual Studio的性能分析器,来监控程序运行时的CPU占用情况,以便定位瓶颈并针对性地优化。 总之,易语言CPU优化涉及代码编写、数据结构、算法选择等多个层面,...
1. **线程级CPU利用率显示**:ProcExp 可以展示每个进程内的所有线程以及它们各自的CPU占用率,这对于定位高CPU使用率的问题至关重要。你可以看到哪个线程正在消耗最多的处理器资源,从而针对性地进行问题排查。 2....
2.jstack pid >> java.txt 导出CPU占用高进程的线程栈。 3.top -H -p PID 查看对应进程的哪个线程占用CPU过高。 4.echo “obase=16; PID” | bc 将线程的PID转换为16进制。 5.在第二步导出的Java.txt中...
通过输入`top`命令,我们可以看到各个进程的CPU和内存使用率,从中找出CPU占用率最高的Java进程。记下该进程的PID(进程ID)。 2. **获取问题线程的TID** 接下来,我们需要找出这个进程中的具体哪个线程导致了CPU...
在操作系统管理计算机资源时,进程是...定期检查高CPU或内存使用率的进程,有助于发现可能导致系统性能下降或不稳定的问题,并及时采取措施进行解决。这是一项基本的系统管理技能,对于任何使用电脑的人都有其价值。
在IT领域,尤其是在服务器性能优化方面,经常遇到的问题之一就是CPU使用率过高。标题和描述中提到的情况,即系统CPU使用率很高,但找不到明显的高CPU应用,这通常需要更深入的诊断技巧来解决。本案例主要涉及Linux...
1.QQ:513187410 2.保证无毒 3.简单,方便,实用 4.实例可以自行改用 5.如有非法,本人无法律责任,由改动代码人负责! 6.需要更多本人作品,查找标签“朱建强” 7.请下载,杀毒后再使用!
1. 使用`ps -mp <WAS_JAVA_PID> -o THREAD`查找占用CPU的线程ID(tid),关注"CP"列,这里显示了CPU使用率。 2. 通过发送信号`kill -3 <WAS_JAVA_PID>`触发服务器进行Thread Dump,这将提供当前所有线程的状态信息。...
- 运行此命令后,会列出该进程中所有线程的CPU使用率,从中找出占用CPU最高的线程。 3. **依据线程 ID(需要十进制转成十六进制),从线程栈中找出步骤2查出的线程** - 在`top -p PID -H`的输出结果中找到占用...
6. **病毒扫描**:恶意软件和病毒也可能导致CPU占用率过高。运行反病毒软件进行全面扫描,并清除任何发现的威胁。 7. **优化启动项**:减少开机启动的程序数量可以减轻系统负担。在系统设置中管理启动项,移除不必...
2. **检查程序代码**:针对高CPU占用的线程,需要仔细审查相关代码逻辑,查找可能存在的问题。例如,是否存在不合理的循环结构、是否有对数据库或外部服务的高频率访问等。 3. **监控JVM参数**:使用工具如`jstat`或...
3. **代码审查**:对代码进行审查,查找可能引起CPU占用高的地方,优化算法和数据结构。 4. **调整配置**:优化Tomcat和JVM的配置,如增大堆内存、选择合适的垃圾收集器、调整线程池大小等。 5. **硬件升级**:...
在开发和运维过程中,有时会遇到Java应用的性能问题,如线程CPU占用过高或者线程死锁。这时,我们就需要用到JVM提供的工具,如`jstack`,来帮助诊断和解决问题。 `jstack` 是JDK自带的一个命令行工具,它能够打印出...
在C#编程中,监测和管理系统的CPU使用率和内存消耗是至关重要的任务,尤其是在开发高性能的应用程序时。本文将详细解析如何使用C#来实现这一功能,主要涉及的类库是System.Diagnostics命名空间,包括...