Java记录一次生产CPU飙升查找原因

news/2025/1/11 10:03:56/

java项目:项目定制化产品的微服务,主要做查es的定时任务和报表统计,实时监控数据.

上线几天,cpu报警
看图:

 

排查思路:

七八个定时任务同时查es,可能造成的飙升,然后只能拿jstack分析,生产环境慎用.
jstack是Java开发工具包中的一个命令行工具,用于生成Java虚拟机(JVM)的线程堆栈跟踪信息。jstack记录的线程堆栈跟踪信息对于分析和调试Java应用程序非常有用。
 

jstack记录的作用:

  1. 线程状态分析:jstack可以提供每个线程的状态信息,包括线程的运行状态(如运行中、等待、阻塞等)和优先级。这对于识别和解决应用程序中的线程问题非常有帮助。
  2. 死锁检测:jstack可以检测并显示应用程序中的死锁情况。通过分析线程堆栈跟踪信息,可以确定哪些线程持有了哪些锁,并且哪些线程正在等待锁。这有助于识别潜在的死锁问题,并采取相应的措施进行解决。
  3. 性能分析:jstack可以提供应用程序中各个线程的执行情况。通过分析线程堆栈跟踪信息,可以确定哪些线程正在执行哪些代码,并了解每个线程的执行时间。这有助于识别性能瓶颈和优化代码。
  4. 内存泄漏分析:jstack可以显示线程堆栈跟踪信息中的对象引用关系。通过分析线程堆栈跟踪信息,可以确定哪些对象正在被哪些线程引用,从而帮助识别潜在的内存泄漏问题。 总之,jstack记录的线程堆栈跟踪信息对于分析和调试Java应用程序非常有用。它可以帮助开发人员识别线程问题、死锁、性能问题和内存泄漏等,并提供有价值的信息用于问题的定位和解决。
jstack 1 > test.txt  1为 PID  test.txt 生成记载的文件

怎么分析java的stack文件?

1.使用jstack命令生成stack文件:在命令行中运行jstack <pid> > stack.txt,其中<pid>是Java应用程序的进程ID。这将会生成一个名为stack.txt的文件,其中包含了Java应用程序的线程堆栈信息。2.打开stack文件:使用文本编辑器(如Notepad++、Sublime Text等)打开生成的stack文件。3.分析线程堆栈信息:在stack文件中,每个线程的堆栈信息以"Thread"开头。每个线程的堆栈信息可以帮助我们了解线程的执行状态、调用的方法以及方法调用的深度。4.查找CPU占用高的线程:根据线程堆栈信息,可以查找CPU占用高的线程。通常情况下,CPU占用高的线程会在堆栈信息中有大量的方法调用或者处于某个方法调用中。5.分析线程堆栈信息:分析CPU占用高的线程的堆栈信息,可以确定导致CPU暴增的具体代码位置。检查是否存在无限循环、过度递归、频繁的IO操作、大量的计算等问题。6.进行代码优化:根据分析结果,进行相应的代码优化。可以使用合适的算法、减少不必要的计算、优化IO操作等,以降低CPU的使用率。7.进行性能测试:在进行代码优化后,可以进行性能测试,验证优化效果。通过监控CPU使用情况,确认是否成功降低了CPU的占用率。
需要注意的是,stack文件只是一个快照,记录了线程的堆栈信息。如果你想要监控应用程序的CPU使用情况,可以考虑使用性能分析工具(如Java VisualVM、JProfiler、YourKit等),这些工具可以提供更详细的CPU使用情况、方法调用树等信息,帮助你更好地分析和解决CPU暴增问题。

问题原因:

 查到原因 ,看了代码 Socket没关闭;
最后:生产上jmap也慎用 
 

哪些对象占用内存 前20
jmap -histo 27863 | head -20


http://www.ppmy.cn/news/1003876.html

相关文章

ubuntu20.04驱动降级(从535降到525)

今天又重装系统了&#xff0c;这是一个悲伤的故事。 但更为悲伤的是装完系统之后无法在“软件和更新”的“附加驱动”去获得“专有驱动”&#xff0c;也就是本来可以直接从界面装nvidia-driver-525&#xff08;专有&#xff09;的选项不可用了&#xff08;都快把屏幕点烂了都没…

https请求异常引发(Received fatal alert: unrecognized_name):如何快速解决项目中问题?

总结思考&#xff1a;如何做一个出色的开发者&#xff1f; 首先我们要承认我们大部分程序员是应用开发&#xff0c;不是操作系统、协议、框架开发等这类底层开发者。 其一&#xff1a;是否能快速定位问题。如找到出现问题的代码&#xff0c;bug出现在哪一行&#xff0c;哪个应…

leetcode做题笔记52

n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的解决方案的数量。 思路一&#xff1a;回溯 int check(int* queens,int row,int col){for(int i0;i<row;i){if(…

leaflet移动端,地图放大到一定层级出现空白解决

记录解决办法&#xff1a; 在uniapp用leaflet加载了天地图&#xff0c;地图放大到一定层级后&#xff0c;地图就显示空白了。原因是leaflet地图放大层级超出&#xff0c;将不再请求地图瓦片。 解决&#xff1a; 官方文档&#xff1a; 代码&#xff1a; var shi new L.tile…

10倍提升效率,号称取代Elasticsearch?

[Manticore Search](https://github.com/manticoresoftware/manticoresearch/) 是一个使用 C 开发的高性能搜索引擎&#xff0c;创建于 2017 年&#xff0c;其前身是 Sphinx Search 。Manticore Search 充分利用了 Sphinx&#xff0c;显着改进了它的功能&#xff0c;修复了数百…

Multimodal Learning with Transformer: A Survey

Transformer多模态学习 Abstract1 INTRODUCTION2 BACKGROUND2.1 Multimodal Learning (MML)2.2 Transformers: a Brief History and Milestones2.3 Multimodal Big Data 3 TRANSFORMERS: A GEOMETRICALLY TOPOLOGICAL PERSPECTIVE3.1 Vanilla Transformer3.1.1 Input Tokenizat…

【react】react生命周期钩子函数:

文章目录 一、生命周期概念:二、生命周期:三、挂载阶段&#xff08;constructor > render > componentDidMount&#xff09;&#xff1a;四、更新阶段&#xff08;render > componentDidUpdate&#xff09;&#xff1a;五、卸载阶段&#xff08;componentWillUnmount …

Wi-Fi HaLow 基础简单介绍

Wi-Fi HaLow是一种低功耗、长距离无线通信技术&#xff0c;专为物联网&#xff08;IoT&#xff09;设备设计。它基于IEEE 802.11ah标准&#xff0c;兼容IPv6&#xff0c;支持WPA3&#xff0c;并且运行在850 MHz的频段上&#xff0c;比传统的Wi-Fi频段&#xff08;2.4 GHz和5 GH…