JVM的CPU资源占用过高问题的排查过程是怎么样的

技术JVM的CPU资源占用过高问题的排查过程是怎么样的今天就跟大家聊聊有关JVM的CPU资源占用过高问题的排查过程是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有

今天跟大家聊聊JVM CPU资源过多的故障排除过程,可能很多人都不太了解。为了让你更好地理解,边肖为你总结了以下内容,希望你能从这篇文章中有所收获。

早上一个在线应用中的一个JVM的CPU比例突然飙升到192%,一直没有降下来,导致监控一直报警。我很久没有处理这个问题了。现在我将总结并记录故障排除步骤。(以下图片并非网上问题截图,涉及公司业务。)

1.通过top命令检查当前机器的CPU使用情况。

JVM的CPU资源占用过高问题的排查过程是怎么样的

这时候发现,如果Java的进程占用太多,又不能一直下来,那就要检查是什么线程造成的高比例。以图中流程为例。如果发现PID为31357的Java进程的CPU比率总是很高,记录下它的PID。

2.检查Java进程中的线程占用情况。

顶部-H -p31357

说明:-H表示显示线程,-p表示指定进程。

JVM的CPU资源占用过高问题的排查过程是怎么样的

可以看到CPU占用了大量的线程,记下它们的PID。假设31357的CPU始终是50%。

3.通过jstack命令获取资源占用异常的线程栈,可以临时保存在文件中查看。

jstack 31357 jstack.31357.log

JVM的CPU资源占用过高问题的排查过程是怎么样的

您可以看到上面指定线程的堆栈信息。

如果想查看线程中锁的其他信息,可以添加一个-l参数。

JVM的CPU资源占用过高问题的排查过程是怎么样的

4.上述方法用于工艺正常时的堆栈打印。今天,jstack -l命令没有响应。估计是CPU一直站着,无法执行正常命令。根据提示【目标进程不响应时可以使用-f选项】,只能放大。

jstack-F“PID”jstack。“PID”。文本文件(textfile)

吐槽的实际日志结果如下:

JVM的CPU资源占用过高问题的排查过程是怎么样的

发现很多线程被阻塞,有用的结果在这里:

JVM的CPU资源占用过高问题的排查过程是怎么样的

显然,线程19576一直在运行,一直在执行EXCEL导出的相关方法。这就是问题所在。接下来的任务是检查这个地方的代码逻辑。

Jstack命令格式:

jstack [选项] pid

参数:

-f jstack [-l]在PID无法响应时强制打印堆栈。

-长长的名单。打印关于锁的附加信息,例如属于java.util.concurrent的可拥有的同步器列表.

-m混合模式输出(包括java和本地c/c片段)堆栈。

java应用程序的进程号。

记得没错的话这几个参数是互斥的,不能联合使用。

5.搜索数据后发现,用jps命令检查java进程的pid更实用:

JVM的CPU资源占用过高问题的排查过程是怎么样的

命令格式

jps [选项] [ hostid ]

参数描述

-m输出传递给main方法的参数,如果是嵌入式JVM,输出为null。

-l输出应用主类的完整包名或应用JAR文件的完整路径。

-v输出传递给JVM的参数。

这三个参数一起显示了更详细的信息:

JVM的CPU资源占用过高问题的排查过程是怎么样的

发现JMX的远程端口是在这些Java进程的启动参数中打开的。正常情况下,通过jconsole远程连接可以看到JVM的日常参数。例如,本地访问上图中的pay.war流程:

JVM的CPU资源占用过高问题的排查过程是怎么样的

JVM的CPU资源占用过高问题的排查过程是怎么样的

JVM的CPU资源占用过高问题的排查过程是怎么样的

看完以上,你对JVM的CPU资源占用问题的故障排除过程有进一步的了解吗?如果您想了解更多知识或相关内容,请关注行业资讯频道,感谢您的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/44218.html

(0)

相关推荐

  • GBase8s数据库有什么特点

    技术GBase8s数据库有什么特点这篇文章主要讲解了“GBase8s数据库有什么特点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“GBase8s数据库有什么特点”吧!注意

    攻略 2021年11月12日
  • 如何理解DIV中display和visibility属性差别

    技术如何理解DIV中display和visibility属性差别如何理解DIV中display和visibility属性差别,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到

    攻略 2021年11月17日
  • 如何进行window版本的安装

    技术如何进行window版本的安装这篇文章给大家介绍如何进行window版本的安装,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1 先解压 elasticsearch-7.3.0-windows-

    攻略 2021年10月20日
  • mysql如何解决幻读(mysql2003错误如何解决)

    技术mysql 5.7如何解决忘记密码问题小编给大家分享一下mysql 5.7如何解决忘记密码问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! mysql5.7忘记密码的解

    攻略 2021年12月16日
  • Percona 5.5如何定位未使用的索引

    技术Percona 5.5如何定位未使用的索引这篇文章主要为大家展示了“Percona 5.5如何定位未使用的索引”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Percona

    攻略 2021年11月2日
  • 合羽欠,《伤寒论》中的发热是发烧吗

    技术合羽欠,《伤寒论》中的发热是发烧吗《伤寒论》中的发热合羽欠,并不完全等同于现代说的发烧。现代的发热具体我们首先来看看什么是现代的发烧:发烧,也称发热,是指致热原直接作用于体温调节中枢、体温中枢功能紊乱或各种原因引起的

    生活 2021年10月21日