Java应用CPU占用过高故障排除

这篇具有很好参考价值的文章主要介绍了Java应用CPU占用过高故障排除。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

最近测试反馈测试环境接口偶现有访问超时,然后APP提示是网络失败,看了一下测试环境的应用完全没啥问题,一直以为是网络问题。

今天测试有反馈了,赶紧看了一下测试服务器,这次终于有症状了,CPU直接飙到300%了。

尽然问题复现了,直接开干,定位问题

Java应用CPU占用过高故障排除,Java基础,linux,java

二、解决思路

1、定位问题应用进程

使用top命令,然后按照CPU排序,如下图所示,进程PID为13258的Java应用占用300%的CPU资源。

Java应用CPU占用过高故障排除,Java基础,linux,java

Java应用造成CPU高的主要原因一般是线程一直处于可运行(Runnable)状态,通常这些线程在执行无阻塞操作、循环、正则或纯粹的计算等任务,
另一个可能造成CPU高的原因是频繁GC

所以现在进程的线程情况

2、查看进程中线程使用情况

使用命令 top -H -p 查看如下图:

#-H:所有线程占用资源情况。
#-p<进程号>:指定进程;
top -H -p 13258

Java应用CPU占用过高故障排除,Java基础,linux,java

发现有三个线程实时CPU占用率较高,并且处理器使用时间非常长,25438线程实际占有处理器的时间甚至达到190分钟。

现在问题已经找到了,就是这三个线程持续占用CPU资源,下面我们再具体看一下这个线程再干嘛

3、查看线程的快照

通过jstack 命令查看线程14689的快照

jstack 13258 |grep "3961" -A 30

Java应用CPU占用过高故障排除,Java基础,linux,java

jstack后面的参数是PID的值,3961是线程id 14689 的十六进制。

可以通过以下命令把线程id转成16进制

 printf "%x\n" 14689

通过观察输出,可以看到线程长期处于可运行状态,直接根据堆栈信息找到对应的代码。

4、最后

找到对应代码修改后基本就解决问题了

Java应用CPU占用过高故障排除,Java基础,linux,java文章来源地址https://www.toymoban.com/news/detail-694385.html

到了这里,关于Java应用CPU占用过高故障排除的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux命令及CPU占用过高的定位分析思路

    不要使用vim打开大文件, vim会一次性读取所有内容到内存,容易造成宿主机内存溢出 。 打开文件前,可以使用 du -h命令查看文件大小 。一般,100MB以下为宜。 j 向下 30j 向下移动30行 k 向上 h 向左 l 向右 0 到行首 ^ 到行首第一个字符,如果前面有空格的话 $ 到行尾 gg 快速到

    2024年02月03日
    浏览(40)
  • 【面试】线上Java程序占用 CPU 过高请说一下排查方法?

    这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的。 线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因? 这就是一个套路题,所谓套路题就是有标准的套路解法的,掌握了套路,不仅能解

    2024年02月09日
    浏览(31)
  • 解决vscode的cpptools占用cpu过高问题

    原因就是C/C++扩展的问题,禁用C/C++就可以解决。具体原因是右键查找代码的引用/声明等操作比较消耗CPU。 如何使用C/C++扩展的同时还能够降低cpu过高的问题是目前的任务,解决方法如下。 以下经试验没效果,(搜索配置项并修改): x     VScode设置 Follow Symlinks 去掉勾选

    2024年02月11日
    浏览(70)
  • 解决antimalware service executable程序占用CPU过高(有效)

    有很多Win10的用户有时会莫名的电脑非常的卡,打开任务管理器查看进程情况,发现有一个Antimalware service executable进程CPU和内存占用率极高。 这个进程也无法关闭(妥妥的流氓): Antimalware Service Executable是win10内置杀毒软件windows defender的一个进程。对于普通用户来说,一般情

    2024年02月12日
    浏览(34)
  • macOS mds_stores CPU占用过高

    当 macOS 的 mds_stores 进程占用过高的 CPU 使用率时,可能是由于 Spotlight 索引过程导致的。Spotlight 是 macOS 中用于搜索和索引文件的系统服务,而 mds_stores 是其索引进程之一。 以下是一些可能的解决方法: 等待一段时间:如果 mds_stores 进程正在进行大量的索引工作,可能需要一

    2024年02月16日
    浏览(31)
  • k8s排查Java应用CPU负载过高问题

    因为k8s发布的pod还未加入资源的监控,在查看pod负载时发现其中pod占用1核CPU 2.1通过debug排查 下一步可以到对应的node节点查看对应进程的信息,也可以通过debug在当前节点进行排查(当节点太多懒得登录过去时) top命令找到所在节点进程信息,找到问题进程 查看详细线程 通

    2024年02月05日
    浏览(38)
  • Vmmem进程(WSL)占用CPU或内存资源过高的解决办法

            有没有一瞬间,在开启docker或打开虚拟机时,内存瞬间飚增,进行查看进程消耗是一个Vmmem的进程在作祟,那么Vmmem是什么呢,又如何进行限制呢!         Vmmem: 是一个系统合成的虚拟进程,用于表示虚拟机小航的内存和CPU资源。换句话说,您看到的Vmmem消耗

    2024年02月13日
    浏览(65)
  • Win10关闭自动更新的方法和影响(Windows modules installer worker cpu占用过高)

    目录 问题描述: Windows modules installer worker是什么? Win10关闭自动更新的方法: Win10关闭自动更新的影响: 问题描述: 有时我们在使用电脑的过程中会突然出现电脑运行过慢,发热,风扇噪音等问题,当我们查看任务管理器时很可能发现Windows Modules Installer Worker进程占用率很

    2024年02月13日
    浏览(34)
  • 关闭Microsoft Compatibility Telemetry服务解决VScode CPU内存占用过高导致电脑卡顿(实测有效)

    解决方法: 关闭Microsoft Compatibility Telemetry服务。 Microsoft Compatibility Telemetry是微软下的一个监测数据收集服务,如果加入Microsoft客户反馈改善计划,该服务就会在监测系统异常并收集反馈到微软,禁用Microsoft Compatibility Telemetry任务计划即可解决问题。 1、打开开始菜单,找到

    2024年02月11日
    浏览(32)
  • java 应用cpu飙升(超过100%)故障排查

    害。。。 昨天刚写完一份关于jvm问题排查相关的博客,今天线上项目就遇到了一个突发问题。 现象是用户反映系统非常卡,无法操作。 然后登录服务器查看发现cpu 一直100%以上。 发现线上pid 29737的 java应用cpu达到100% 输入上述命令,然后按H显示cpu最高排名的线程。可以看到

    2023年04月26日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包