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),小明只能向上下左右四个方…...

【教程】PyTorch Timer计时器
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] OpenCV的Timer计时器可以看这篇:Python Timer和TimerFPS计时工具类 Timer作用说明:统计某一段代码的运行耗时。 直接上代码,开箱即用。 import time import torch import os …...

因果推断(六)基于微软框架dowhy的因果推断
因果推断(六)基于微软框架dowhy的因果推断 DoWhy 基于因果推断的两大框架构建:「图模型」与「潜在结果模型」。具体来说,其使用基于图的准则与 do-积分来对假设进行建模并识别出非参数化的因果效应;而在估计阶段则主要…...

探索隧道ip如何助力爬虫应用
在数据驱动的世界中,网络爬虫已成为获取大量信息的重要工具。然而,爬虫在抓取数据时可能会遇到一些挑战,如IP封禁、访问限制等。隧道ip(TunnelingProxy)作为一种强大的解决方案,可以帮助爬虫应用更高效地获…...

题目:2629.复合函数
题目来源: leetcode题目,网址:2629. 复合函数 - 力扣(LeetCode) 解题思路: 倒序遍历计算。 解题代码: /*** param {Function[]} functions* return {Function}*/ var compose function(…...

【实训项目】精点考研
1.设计摘要 如果说高考是一次能够改变命运的考试,那么考研应该是另外一次。为什么那么多人都要考研呢?从中国教育在线官方公布是考研动机调查来看,大家扎堆考研的原因大概集中在这6个方面:本科就业压力大,提升竞争力、…...

软件测试Pytest实现接口自动化应该如何在用例执行后打印日志到日志目录生成日志文件?
Pytest可以使用内置的logging模块来实现接口自动化测试用例执行后打印日志到日志目录以生成日志文件。以下是实现步骤: 1、在pytest配置文件(conftest.py)中,定义一个日志输出路径,并设置logging模块。 import loggi…...

深入理解作用域、作用域链和闭包
🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 📚 前言 📘 1. 词法作用域 📖 1.2 示例 📖 1.3 词法作用域的…...

7款适合3D建模和渲染的GPU推荐
选择一款完美的 GPU 并不是一件容易的事;您不仅必须确保有特定数量的线程和内核来处理图像,而且还应该有足够的 RAM。 这是因为 3D 渲染是一个活跃的工作过程,因为您必须坐在 PC 前并持续与软件交互。为了在 3D 场景中积极工作,您…...

边缘计算物联网网关在机械加工行业的应用及作用分享
随着工业4.0的推进,物联网技术正在逐渐渗透到各个行业领域。机械加工行业作为制造业的基础领域之一,其生产过程的自动化、智能化水平直接影响到产品质量和生产效率。边缘计算物联网网关作为物联网技术的重要组成部分,在机械加工行业中发挥着越…...

(笔记六)利用opencv进行图像滤波
(1)自定义卷积核图像滤波 import numpy as np import matplotlib.pyplot as plt import cv2 as cvimg_path r"D:\data\test6-6.png" img cv.imread(img_path)# 图像滤波 ker np.ones((6, 6), np.float32)/36 # 构建滤波器(卷积…...