`
yang_ch
  • 浏览: 79496 次
社区版块
存档分类
最新评论

关于Java CPU占用过高的问题解决总结

 
阅读更多

 

 

以前做压测的时候,遇到过CPU过高的情况,但是没有总结,今天又遇到这种情况,导致到处找资料,虽然知道思路,但是很多命令都要重新找度娘或谷歌。所以这次总结下:

 

现象:项目突然宕机,连到服务器上发现CPU 接近800%(8核)。

 

步骤1:首先top命令查看CPU占用最高的进程,发现是java进程(32691)。

步骤2:在top界面按下“H”(centOS,ubuntu)查询最高的线程信息(32693),一般为多个。

 

步骤3:“kill -3 32691(tomcat进程号)”,这时会将此时刻线程的堆栈信息输出到catalina.out文件中。

步骤4:将32693转换为16进制7fb5,在catalina.out中搜索该进程,查看堆栈信息

步骤5:这里一般可以看到几种情况 1.死锁 2.死循环或大量循环 3.gc(垃圾回收)

步骤6:如果是gc,则可以使用jstat -gcutil 326911000 100打印出gc情况,检查内存使用情况和gc情况

还可以使用工具,配上jconsole配置(linux):

catalina.sh中增加CATALINA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.1.188 -Dcom.sun.management.jmxremote.port=9527 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

 或使用jvisualvm.exe工具。

步骤7:如果内存基本为100%,则可以使用上面的工具进行dump内存文件。然后使用eclipse插件mat进行内存分析,也可以使用命令生成headDump文件。

jmap -dump:format=b,file=/home/gytec/aa.hprof 9665

 

 

上述基本可以确定内存中对象分布,结合自己的业务逻辑和代码一般就能分析出哪里有内存泄漏了。

 

今天太晚了,没图了,下次补图。

分享到:
评论

相关推荐

    【原创】java程序cpu占用过高问题分析

    这篇原创博客“【原创】java程序cpu占用过高问题分析”探讨了如何识别和解决这些问题。 首先,分析CPU占用过高的第一步是获取性能数据。这通常通过Java的JMX(Java Management Extensions)或者监控工具如VisualVM...

    java cpu 内存占用高 问题 模拟并排查

    java cpu 内存占用高 问题 模拟并排查 https://blog.csdn.net/jiankunking/article/details/79749836 https://blog.csdn.net/jiankunking/article/details/79749483

    java应用cpu占用过高问题分析及解决方法

    Java 应用 CPU 占用过高问题分析及解决方法 Java 应用程序的 CPU 占用率过高是一个常见的问题,影响着系统的性能和稳定性。在本文中,我们将讨论 Java 应用程序 CPU 占用率过高的原因、分析方法和解决方法。 一、...

    Java进程cpu占用率高

    综上所述,解决“Java进程CPU占用率高”问题需要从多个角度出发,包括但不限于代码优化、JVM调优、垃圾收集策略调整、监控与诊断工具的使用等。通过系统性地分析和改进,可以有效地降低Java进程对CPU的占用,提高...

    java监控linux cpu使用率

    CPU使用率是指在特定时间间隔内,CPU被占用的时间比例,通常以百分比表示。在Linux中,可以通过`/proc/stat`文件获取这些信息。这个文件包含了系统启动以来的CPU使用统计,包括用户进程、系统进程、空闲时间等。 在...

    Java进程cpu占用过高问题解决

    Java进程cpu占用过高问题解决是指Java进程中cpu占用率过高的问题,导致了系统性能下降和服务器崩溃。解决这个问题需要了解Java进程的cpu占用率的原因,并采取相应的措施来解决。 cpu占用率过高的原因: 1、Java ...

    java实战CPU占用过高问题的排查及解决

    Java 实战 CPU 占用过高问题的排查及解决 在 Java 应用程序中,CPU 占用过高是一个常见的问题,可能会导致服务器崩溃或应用程序崩溃。因此,快速定位和解决 CPU 占用过高问题是非常重要的。本文将分享 Java 实战 ...

    linux服务器找到占用cpu高的java代码的办法

    在Linux服务器环境中,Java应用程序可能由于各种原因导致CPU使用率过高,这可能会影响系统的整体性能。要找到占用CPU高的Java代码,我们可以采取一系列步骤来诊断和优化问题。以下是一种详细的方法: 1. **查看系统...

    CPU占用高

    CPU过热或硬件故障也可能导致CPU占用高。检查散热设备是否正常工作,确认CPU风扇是否清洁,必要时更换散热膏或修理硬件。 7. **工具使用**: 有一些工具如Process Explorer(微软出品)或VisualVM(Java应用性能...

    java进程占用CPU和内存太高问题排查相关测试文件.zip

    当Java进程CPU占用率过高时,可能的原因包括无限循环、线程阻塞、计算密集型任务或垃圾回收问题等。`44974.stack`文件很可能包含了Java线程堆栈跟踪,通过分析这个文件,我们可以看到各个线程的状态和它们正在执行...

    java 通过jni查看windows的CPU利用率的问题

    标题“Java通过JNI查看Windows的CPU利用率的问题”涉及到的是Java编程语言如何利用Java Native Interface (JNI) 这一技术来获取Windows操作系统的CPU使用情况。JNI是Java平台标准的一部分,它允许Java代码和其他语言...

    用java获取cpu占用

    以下是关于如何使用Java获取CPU占用率的详细知识讲解。 1. **Java Management Extensions (JMX)** JMX 是Java提供的一种管理和监控应用程序的标准框架。通过MBeans(Managed Beans),你可以获取到各种系统的运行...

    CPU使用率查看工具

    当CPU使用率过高,可能导致设备过热、响应变慢或者电池寿命缩短。通过这样的工具,用户可以找出占用CPU资源过多的应用或进程,以便优化设备的性能。 描述中提到的ZIP文件是常见的压缩格式,用于打包多个文件到一个...

    CPU资源占用100%解决方法

    2. **更新软件和驱动**:有时候,某些软件的bug或者不兼容性也可能造成CPU占用过高。确保操作系统、浏览器和其他常用软件都保持最新版本,同时,硬件驱动程序也需更新,特别是显卡和声卡驱动,它们经常是问题的源头...

    70-Java程序CPU占用1001

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

    Java进程CPU使用率高排查

    近期java应用,CPU使用率一直很高,经常达到,通过以下步骤完美解决,分享一下。  1.jps 获取Java进程的PID。  2.jstack pid >> java.txt 导出CPU占用高进程的线程栈。  3.top -H -p PID 查看对应进程的哪个...

    教你找出 运行java项目,使cpu 100%,如何排查出是哪个jar包的哪个线程导致的

    在Java开发过程中,有时会遇到项目运行时CPU占用率达到100%的问题,这可能是由于某个线程...通过深入理解这些工具和方法,你可以有效地预防和解决Java项目运行时CPU使用率过高的问题,从而确保应用程序的稳定性和效率。

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

    在Linux系统管理中,CPU占用率过高是一个常见的问题,它可能导致系统性能下降,甚至影响到服务的稳定性。本文主要探讨了如何排查和解决Linux系统中CPU利用率高的问题,包括两种常用的方法以及一个实际的故障排查案例...

    java获取cpu、内存信息

    总结来说,通过Java提供的管理API,我们可以轻松地获取CPU使用率、内存使用情况以及线程状态等信息,这对于系统监控、性能优化和问题排查都非常有帮助。在实际应用中,这些信息可以被整合到日志系统或者专门的监控...

    控制cpu的占用率

    在IT领域,优化CPU占用率是一项重要的任务,特别是在服务器管理和应用程序性能调优中。本文将深入探讨如何控制CPU的占用率,并提供相关的源码和工具分析。首先,我们需要理解CPU占用率的概念及其影响因素。 CPU占用...

Global site tag (gtag.js) - Google Analytics