Java应用CPU占用过高故障排除
一、背景
最近测试反馈测试环境接口偶现有访问超时,然后APP提示是网络失败,看了一下测试环境的应用完全没啥问题,一直以为是网络问题。
今天测试有反馈了,赶紧看了一下测试服务器,这次终于有症状了,CPU直接飙到300%了。
尽然问题复现了,直接开干,定位问题
二、解决思路
1、定位问题应用进程
使用top命令,然后按照CPU排序,如下图所示,进程PID为13258的Java应用占用300%的CPU资源。
Java应用造成CPU高的主要原因一般是线程一直处于可运行(Runnable)状态,通常这些线程在执行无阻塞操作、循环、正则或纯粹的计算等任务,
另一个可能造成CPU高的原因是频繁GC
所以现在进程的线程情况
2、查看进程中线程使用情况
使用命令 top -H -p 查看如下图:
#-H:所有线程占用资源情况。
#-p<进程号>:指定进程;
top -H -p 13258
发现有三个线程实时CPU占用率较高,并且处理器使用时间非常长,25438线程实际占有处理器的时间甚至达到190分钟。
现在问题已经找到了,就是这三个线程持续占用CPU资源,下面我们再具体看一下这个线程再干嘛
3、查看线程的快照
通过jstack 命令查看线程14689的快照
jstack 13258 |grep "3961" -A 30
jstack后面的参数是PID的值,3961是线程id 14689 的十六进制。
可以通过以下命令把线程id转成16进制
printf "%x\n" 14689
通过观察输出,可以看到线程长期处于可运行状态,直接根据堆栈信息找到对应的代码。
4、最后
找到对应代码修改后基本就解决问题了
相关文章:

Java应用CPU占用过高故障排除
一、背景 最近测试反馈测试环境接口偶现有访问超时,然后APP提示是网络失败,看了一下测试环境的应用完全没啥问题,一直以为是网络问题。 今天测试有反馈了,赶紧看了一下测试服务器,这次终于有症状了,CPU直…...

嵌入式Linux开发实操(十五):nand flash接口开发(2)
通用NAND驱动程序支持几乎所有基于NAND的芯片,并将它们连接到Linux内核的内存技术设备(MTD)子系统。这个接口走的是nand的并口,可以在shell的/dev中看到设备,比如/mtd0、/mtd0ro…,mtdblock0、mtdblock1… sysfs在设备层次结构中提供了几个视角。设备必须挂在某条总线bus…...

作为一家游戏开发公司,有哪些经验可以分享?
在竞争激烈的游戏开发行业中,成功的游戏开发公司需要不断学习、创新和积累经验。作为一家经验丰富的游戏开发公司,我们愿意分享一些我们认为对于取得成功至关重要的经验和教训。这些经验涵盖了游戏开发的各个方面,从创意构思到发布和营销。希…...

【100天精通Python】Day51:Python 数据分析_数据分析入门基础与Anaconda 环境搭建
目录 1 科学计算和数据分析概述 2. 数据收集和准备 2.1 数据收集 2.1.1 文件导入: 2.1.2 数据库连接: 2.1.3 API请求: 2.1.4 网络爬虫: 2.2 数据清洗 2.2.1 处理缺失值: 2.2.2 去除重复值: 2.2…...

网络安全(黑客)自学路线
很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。 算上从学校开始学习,已经在网安这条路上走…...

HTML5
写在前面 一、简单认识HTML 1.1 什么是网页【2023/08/31】 网站是指因特网上根据一定的规则,使用HTML等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”,通常是HTML格式的文件,它要通过浏览器来阅读。 网页是构成网站的…...

Vue+Element-ui实现表格本地导入
表格文件存储在前端 如图,表格文件template.xlsx存储在public下的static文件夹下 注意这里的路径容易报错 a链接下载文件失败的问题(未发现文件) a.href ‘./static/template.xlsx’ 写的时候不能带public,直接这么写就可以 DownloadTemp…...
Golang参数输入
Golang参数输入 1.命令行参数(os.Args) package mainimport ("fmt""os""strconv" )func main() {for i, num : range os.Args[1:] {fmt.Println("参数"strconv.Itoa(i)": ", num)} } //输入&#x…...
2023年8月第4周大模型荟萃
2023年8月第4周大模型荟萃 2023.8.31版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 1、美国法官最新裁定:纯AI生成的艺术作品不受版权保护 美国华盛顿一家法院近日裁定,根据美国政府的法律,在没有任何…...
Kafka监控工具,LinkedIn详解
Kafka监控工具包括以下几种: Kafka Manager:这是一个开源的Kafka集群管理工具,可以监控Kafka集群的健康和性能,并提供可视化的用户界面。 Kafka Monitor:这是LinkedIn开发的一个监控工具,可以监控Kafka集群…...
如何处理 Flink 作业频繁重启问题?
分析&回答 Flink 实现了多种重启策略 固定延迟重启策略(Fixed Delay Restart Strategy)故障率重启策略(Failure Rate Restart Strategy)没有重启策略(No Restart Strategy)Fallback重启策略ÿ…...

Windows 安装 RabbitMq
Windows 上安装 RabbitMQ 的步骤 RabbitMQ 是一个强大的开源消息队列系统,广泛用于构建分布式、可扩展的应用程序。本教程将带您一步一步完成在 Windows 系统上安装 RabbitMQ 的过程。无需担心,即使您是初学者,也能够轻松跟随这些简单的步骤…...

Mybatis的关系关联配置
前言 MyBatis是一个流行的Java持久化框架,它提供了一种简单而强大的方式来映射Java对象和关系数据库之间的数据。在MyBatis中,关系关联配置是一种用于定义对象之间关系的方式,它允许我们在查询数据库时同时获取相关联的对象。 在MyBatis中&…...

【知识积累】准确率,精确率,召回率,F1值
二分类的混淆矩阵(预测图片是否是汉堡) 分类器到底分对了多少? 预测的图片中正确的有多少? 有多少张应该预测为是的图片没有找到? 精确率和召回率在某种情况下会呈现此消彼长的状况。举个极端的例子…...
什么是分布式系统?
分布式系统是由多个独立的计算机或计算节点组成的系统,这些节点通过消息传递或共享数据的方式进行协调和通信,以实现共同的目标。分布式系统的设计目标是提高系统的可靠性、可扩展性、性能和容错性。 在一个分布式系统中,各个计算机节点之间…...
[AGC043D] Merge Triplets
题目传送门 引 很有意思的计数题 解法 考虑经过操作后得到的排列的性质 性质1: 设 p r e ( i ) pre(i) pre(i):前i个位置的最大值,则不会出现超过3个的连续位置的 p r e pre pre相同 必要性: 考虑反证,若有超过 3 3 3个的连续…...
2023年人工智能开源项目前20名
推荐:使用 NSDT场景编辑器快速搭建3D应用场景 1. Tensorflow 2. Hugging Face Transformers 3. Opencv 4. Pytorch 5. Keras 6. Stable Diffusion 7. Deepfacelab 8. Detectron2 9. Apache Mxnet 10. Fastai 11. Open Assistant 12. Mindsdb 13. Dall E…...

ThinkPHP 集成 jwt 技术 token 验证
ThinkPHP 集成 jwt 技术 token 验证 一、思路流程二、安装 firebase/php-jwt三、封装token类四、创建中间件,检验Token校验时效性五、配置路由中间件六、写几个测试方法,通过postman去验证 一、思路流程 客户端使用用户名和密码请求登录服务端收到请求&…...

gerrit 如何提交进行review
前言 本文主要介绍如何使用gerrit进行review。 下述所有流程都是参考: https://gerrit-review.googlesource.com/Documentation/intro-gerrit-walkthrough.html 先给一个commit后但是还没有push上去的一个办法: git reset --hard HEAD^可以多次reset.…...
罗勇军 →《算法竞赛·快冲300题》每日一题:“游泳” ← DFS+剪枝
【题目来源】http://oj.ecustacm.cn/problem.php?id1753http://oj.ecustacm.cn/viewnews.php?id1023【题目描述】 游泳池可以等分为n行n列的小区域,每个区域的温度不同。 小明现在在要从游泳池的左上角(1, 1)游到右下角(n, n),小明只能向上下左右四个方…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...