首页 > 系统相关 >排查Java进程占用CPU高的原因

排查Java进程占用CPU高的原因

时间:2024-12-20 13:30:37浏览次数:5  
标签:Java 占用 排查 线程 进程 CPU 255

背景

一般java程序占用cpu内存都不会太高,出现占用高的情况,第一反应就是,进程在某个地方死循环了。

排查

    1. top -Hp 15057 查看下进程中的线程资源占用情况

由上图可见,CPU时间片主要是被15393 这个线程给吃掉了, 所以目标锁定在 15393。

执行 printf "%x\n" 15393,计算出线程ID对应的16进制。

    1. 执行 sudo -u www jstack 15057,获取当前进程中各线程的调用栈

对比之前计算出来的二进制id:3c21,找到占用CPU资源最高的线程堆栈,如上图所示。

看样子是在LoguUtil的255行出了问题,赶紧定位到这一行看看:

这里写了一个死循环,并在255行调用了阻塞队列的poll(),很明显,方法调用错了,poll()在队列会空的时候会直接返回null,并不会阻塞等待,所以造成进程一直在这儿死循环。

那么为什么测试的时候没有发现呢?因为只要有日志,代码很难走到255行,之所以能发现这个问题,是因为我登录机器这段时间是在深夜,刚好没有日志。

验证

将代码修改提交部署后,在登录机器看看CPU占用情况:

此时Java进程的CPU占用已经恢复正常了。


原文章地址:
https://mp.weixin.qq.com/s/HusklYs69fP8VXDUxht3zQ

标签:Java,占用,排查,线程,进程,CPU,255
From: https://www.cnblogs.com/1399z3blog/p/18619086

相关文章

  • javaweb地方农产品特产展销系统
    目录项目介绍具体实现截图开发核心技术:写作提纲开发过程思路核心代码部分展示实验方案:详细视频演示源码获取方式项目介绍选题则旨在通过标签分类管理等方式,实现管理员;个人中心、用户管理、特产商品管理、商品类型管理、我的收藏管理、系统管理、订单管理,用户;个人中......
  • 师生交流系统|Java|SSM|JSP|
                   【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apache......
  • 少儿编程教育系统|Java|SSM|JSP| 
                            【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html5⃣️数据库可视化工具:navicat6⃣️服......
  • 新闻发布系统|Java|SSM|JSP| 
                 【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apachetomcat......
  • 师生交流系统|Java|SSM|JSP| 
                            【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html5⃣️数据库可视化工具:navicat6⃣️服......
  • 少儿编程教育系统|Java|SSM|JSP| 
                            【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html5⃣️数据库可视化工具:navicat6⃣️服......
  • 网络直播带货查询系统:SSM 框架的 JAVA 设计与 JSP 开发实现
    第三章系统分析3.1系统设计目标网络直播带货网站主要是为了用户方便对商品信息的了解以及查看商品分类和查看订单信息,也是为了更好的让管理员进行更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户的可操......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-8- 元素高级定位技巧(详细教程)
    1.简介随着网页的复杂性和动态性的增加,自动化测试变得越来越重要。Playwright作为一款强大的无头浏览器测试库,提供了多种元素定位方式,使得我们能够轻松地对网页进行自动化操作。在基础的定位方式如通过id、classname和tagname等之外,Playwright还提供了更高级的定位技巧,如nth()......
  • JavaScript开发中常见问题代码和相关优化Demo参考1.0
    1.异步编程的理解和使用问题代码:functionfetchData(url,callback){setTimeout(()=>{//模拟异步请求constdata={message:"HelloWorld"};callback(data);},1000);}fetchData('http://example.com',function(response){conso......
  • 【Java学习笔记】多线程基础
    并行:同一时刻,多任务同时进行多任务分别进行一、线程相关概念1.程序是为完成特定任务、用某种语言编写的一组指令的集合。简单的说:就是我们写的代码2.进程(1)进程指的就是运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存空间。当我们使用迅......