以前做压测的时候,遇到过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占用过高问题分析”探讨了如何识别和解决这些问题。 首先,分析CPU占用过高的第一步是获取性能数据。这通常通过Java的JMX(Java Management Extensions)或者监控工具如VisualVM...
本文将详细解析如何使用Java语言来获取CPU占用率,这不仅涉及了基本的Java编程技巧,还深入到了操作系统级别的交互,以及对系统资源监控的理解。 ### Java获取CPU占用率的方法 #### 1. **操作系统识别与兼容性** ...
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占用率高”问题需要从多个角度出发,包括但不限于代码优化、JVM调优、垃圾收集策略调整、监控与诊断工具的使用等。通过系统性地分析和改进,可以有效地降低Java进程对CPU的占用,提高...
CPU使用率是指在特定时间间隔内,CPU被占用的时间比例,通常以百分比表示。在Linux中,可以通过`/proc/stat`文件获取这些信息。这个文件包含了系统启动以来的CPU使用统计,包括用户进程、系统进程、空闲时间等。 在...
Java进程cpu占用过高问题解决是指Java进程中cpu占用率过高的问题,导致了系统性能下降和服务器崩溃。解决这个问题需要了解Java进程的cpu占用率的原因,并采取相应的措施来解决。 cpu占用率过高的原因: 1、Java ...
Java 实战 CPU 占用过高问题的排查及解决 在 Java 应用程序中,CPU 占用过高是一个常见的问题,可能会导致服务器崩溃或应用程序崩溃。因此,快速定位和解决 CPU 占用过高问题是非常重要的。本文将分享 Java 实战 ...
在Linux服务器环境中,Java应用程序可能由于各种原因导致CPU使用率过高,这可能会影响系统的整体性能。要找到占用CPU高的Java代码,我们可以采取一系列步骤来诊断和优化问题。以下是一种详细的方法: 1. **查看系统...
CPU过热或硬件故障也可能导致CPU占用高。检查散热设备是否正常工作,确认CPU风扇是否清洁,必要时更换散热膏或修理硬件。 7. **工具使用**: 有一些工具如Process Explorer(微软出品)或VisualVM(Java应用性能...
在Java编程环境中,当遇到"Java程序CPU占用100%"的问题时,这通常意味着程序中存在性能瓶颈或者死循环,导致CPU资源被过度消耗。为了解决这个问题,我们需要进行一系列的诊断步骤来定位问题所在。以下是详细的排查...
当Java进程CPU占用率过高时,可能的原因包括无限循环、线程阻塞、计算密集型任务或垃圾回收问题等。`44974.stack`文件很可能包含了Java线程堆栈跟踪,通过分析这个文件,我们可以看到各个线程的状态和它们正在执行...
标题“Java通过JNI查看Windows的CPU利用率的问题”涉及到的是Java编程语言如何利用Java Native Interface (JNI) 这一技术来获取Windows操作系统的CPU使用情况。JNI是Java平台标准的一部分,它允许Java代码和其他语言...
以下是关于如何使用Java获取CPU占用率的详细知识讲解。 1. **Java Management Extensions (JMX)** JMX 是Java提供的一种管理和监控应用程序的标准框架。通过MBeans(Managed Beans),你可以获取到各种系统的运行...
通过JNI,我们可以编写特定于操作系统的C/C++代码来调用系统调用,获取关于CPU使用率和内存占用的数据,然后将这些信息传递回Java应用程序。相比依赖于解析操作系统特定的命令行工具(如Unix的`ps`命令)输出,这种...
背景:由于使用的业主的云资源,由于使用率低,会不持续的缩减服务器配置。...问题:怎样通过Java程序实现CPU、内存占用超过50%? 方案:详见我的博客:https://blog.csdn.net/taotao_guiwang?spm=1010.2135.3001.5343
当CPU使用率过高,可能导致设备过热、响应变慢或者电池寿命缩短。通过这样的工具,用户可以找出占用CPU资源过多的应用或进程,以便优化设备的性能。 描述中提到的ZIP文件是常见的压缩格式,用于打包多个文件到一个...
2. **更新软件和驱动**:有时候,某些软件的bug或者不兼容性也可能造成CPU占用过高。确保操作系统、浏览器和其他常用软件都保持最新版本,同时,硬件驱动程序也需更新,特别是显卡和声卡驱动,它们经常是问题的源头...
本文将深入探讨一次由于Java应用导致CPU占用过高的排查实践过程。 首先,当发现应用CPU使用率异常时,第一步是确认是否真的是计算密集型任务导致的。在大多数情况下,CPU高负荷往往是由于程序中的逻辑错误,如死...