113 如何排查 cpu 过高的业务进程

前言

又是一个面试问题, 呵呵 之前碰到的

一个 java 进程 cpu 占用率过高, 应该如何排查? 

对于这种问题, 第一反应就是 jstack, pstack, 然后仔细观察多次堆栈信息结果的 重复率较高的代码

因此 我给出的思路是, 写脚本 多次 jstack 目标进程, 然后 再统计分析一下 出现频率最高的 topN 的方法调用附近的东西 

呵呵 这里来整理一下  这个流程

测试用例

这里主要是一个 不断计算的一个测试用例

主要是确保 程序一直在不断的执行, 计算的相关操作, 这里不要加入 io 的相关操作 

-Xint 是防止, jvm 的编译优化, 将 funcA, funcB, funcC, funcD 的相关处理削除掉了 

/*** Test17CpuTooHigh** @author Jerry.X.He* @version 1.0* @date 2023/9/20 17:38*/
public class Test17CpuTooHigh {// Test17CpuTooHigh// -Xintpublic static void main(String[] args) {while (true) {funcA();}}public static void funcA() {for (int i = 0; i < 10000; i++) {funcB();}}public static void funcB() {for (int i = 0; i < 10000; i++) {funcC();}}public static void funcC() {for (int i = 0; i < 10000; i++) {funcD();}}public static void funcD() {for (int i = 0; i < 10000; i++) {int x = 2, y = 3;int z = x + y;}}}

多次统计 jstack 的脚本

呵呵 简单的输出, 不多解释 

public class Test18OutputJstackScripts {// Test18OutputJstackScriptspublic static void main(String[] args) {String pid = "14232";for (int i = 0; i < 100; i++) {System.out.println(String.format("jstack %s >> %s.txt", pid, i));}}}

统计方法调用频率最高的 topN

呵呵 这里仅仅考虑 相对比较 common 的场景, 简单处理 

特殊的场景, 需要特殊考虑 

/*** Test19CollectMostCommonCode** @author Jerry.X.He* @version 1.0* @date 2023/9/20 17:46*/
public class Test19CollectMostCommonCode {// Test19CollectMostCommonCodepublic static void main(String[] args) throws Exception {String path = "D:\\Tmp\\30_multi_jstack";Map<String, Integer> func2Count = new LinkedHashMap<>();FileUtils.traverse(path, file -> {return !file.getName().contains("run");}, file -> {try {List<String> lines = Tools.getContentWithList(file);for (String line : lines) {if (!line.contains("at ")) {continue;}String func = Tools.getStrInRangeWithStart(line, "at ");Integer oldCount = func2Count.computeIfAbsent(func, k -> 0);func2Count.put(func, oldCount + 1);}} catch (Exception e) {e.printStackTrace();}});List<String> keywords = Arrays.asList("spring", "hx", "test");List<Pair<String, Integer>> list = new ArrayList<>();for (Map.Entry<String, Integer> entry : func2Count.entrySet()) {String func = entry.getKey();List<String> targetKeywords = keywords.stream().filter(k -> func.contains(k)).collect(Collectors.toList());if (CollectionUtils.isEmpty(targetKeywords)) {continue;}list.add(new Pair<>(entry.getKey(), entry.getValue()));}Collections.sort(list, (o1, o2) -> {return -(o1.getSecond() - o2.getSecond());});int x = 0;}}

最终执行结果如下

就可以根据这些方法调用的相关信息, 来定位导致 cpu 过高的原因 

一般来说是 无限循环 或者 非常大的循环 或者 无限递归

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion 模型分享:CyberRealistic XL(真实)cyberrealisticXL_v11VAE.safetensors

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八下载地址模型介绍

mybatisPlus数据字段填充

这里用到的时实体类User import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import lombok.…

压缩感知的概述梳理(1)

参考文献 An efficient visually meaningful image compression and encryption scheme based on compressive sensing and dynamic LSB embedding 基本内容 基本关系梳理 压缩感知核心元素 信号 x 长度&#xff1a;N动态稀疏或可用变换表示&#xff1a;x &#x1d74d;s …

如何将低分辨率的视频变高清,使用AI工具分辨率画质增强至1080P、4K或者8K(附工具)

环境&#xff1a; Topaz Video AI 5.0 问题描述&#xff1a; 如何将低分辨率的视频变高清&#xff0c;使用AI工具分辨率画质增强至1080P、4K或者8K 原视频 增强1080P 解决方案&#xff1a; 1.打开软件&#xff0c;导入要处理的视频&#xff08;工具在本文最后附上&#xf…

C 排序算法

冒泡排序 冒泡排序&#xff08;英语&#xff1a;Bubble Sort&#xff09;是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序&#xff08;如从大到小、首字母从A到Z&#xff09;错误就把他们交换过来。 过程演示&…

学习笔记------时序约束之时钟周期约束

本文摘自《VIVADO从此开始》高亚军 主时钟周期约束 主时钟&#xff0c;即从FPGA的全局时钟引脚进入的时钟或者由高速收发器输出的时钟。 对于时钟约束&#xff0c;有三个要素描述&#xff1a;时钟源&#xff0c;占空比和时钟周期。 单端时钟输入 这里我们新建一个工程&#x…

芯片灌封胶是什么?有哪些优点?

芯片灌封胶是什么&#xff1f;有哪些优点&#xff1f; 芯片灌封胶是一种液态复合物&#xff0c;通过机械或手工方式精准灌入装有电子元件、线路的器件内&#xff0c;在常温或加热条件下固化成为性能优异的热固性高分子绝缘材料。它广泛应用于电子元器件的粘接、密封、灌封和涂…

微信小程序自定义导航栏定位及胶囊按钮图解

在自定义小程序导航栏时&#xff0c;右上角的胶囊&#xff08;MenuButton&#xff09;在不同机型测试&#xff0c;会发现很难适配。 实测中 不同的手机&#xff0c;胶囊高度不一样、状态栏高度不一样。与模拟器显示的情况是不一样的。 由于小程序在不同的手机上顶部布局会发生…

解锁数据潜能:构建高效数据仓库的策略与实践

在数字化时代&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;随着数据量的激增&#xff0c;企业面临着数据管理的诸多挑战。如何有效地利用这些数据&#xff0c;支持企业的决策和运营&#xff0c;成为每个企业都需要解答的问题。数据仓库的建设和数据的合理分层…

B1100 校庆

输入样例&#xff1a; 5 372928196906118710 610481197806202213 440684198612150417 13072819571002001X 150702193604190912 6 530125197901260019 150702193604190912 220221196701020034 610481197806202213 440684198612150417 370205198709275042 输出样例&#xff1a;…

LInux shell编程之基础语法

目录 1、shell概述 1.1、查看Linux 提供的 Shell 解析器 1.2、bash 和 sh 的关系 1.3、查看系统&#xff08;centos&#xff09;默认使用的解释器 2、脚本的基础使用 2.1、脚本的格式 2.2、脚本的执行方式 方式一&#xff1a;采用 bash / sh 脚本的相对路径或绝对路径…

Intel性能分析工具Vtune安装和使用简介

一、介绍 Intel Vtune profiler是用于串行和多线程应用程序的性能分析工具&#xff0c;可以帮助软件开发人员对应用程序的性能问题进行分析&#xff0c;支持包括linux和windows在内的多种操作系统。主要功能包括&#xff1a; 性能分析&#xff1a;可以对应用程序进行深入的性…

单片机入门还能从51开始吗?

选择从51单片机开始入门还是直接学习基于ARM核或RISC核的单片机&#xff0c;取决于学习目标、项目需求以及个人兴趣。每种单片机都有其特定的优势和应用场景&#xff0c;了解它们的特点可以帮助你做出更合适的选择。 首先&#xff0c;我们说一下51单片机的优势&#xff1a; 成熟…

网络安全:绕过 MSF 的一次渗透测试

这次渗透的主站是 一个 Discuz!3.4 的搭建 违法招 piao 网站&#xff0c; 配置有宝塔 WAF 用 Discuz!ML 3.X 的漏洞进行攻击&#xff0c;但是没有成功 发现主站外链会有一个发卡网&#xff0c;引导人们来这充值&#xff0c;是 某某发卡网&#xff0c;而且域名指向也是主站的 ip…

数据库服务的运行与登录

打开数据库服务 数据库服务: SQL Server(MSSQLServer) 运行在服务器端的应用程序, 提供数据的存储 / 处理和事务等在使用DBMS的客户端之前必须首先打开该服务 客户端连接到服务器 关于客户端 / 服务器端的说明 客户端 : 数据库管理系统(DBMS), 应用程序服务器端 : 安装的数据…

L1-8 刮刮彩票

“刮刮彩票”是一款网络游戏里面的一个小游戏。如图所示&#xff1a; 每次游戏玩家会拿到一张彩票&#xff0c;上面会有 9 个数字&#xff0c;分别为数字 1 到数字 9&#xff0c;数字各不重复&#xff0c;并以 33 的“九宫格”形式排布在彩票上。 在游戏开始时能看见一个位置上…

「不羁联盟/XDefiant」4月20号开启服务器测试,游戏预下载安装教程

XDefiant》开启Alpha测试&#xff0c;这是一款免费游玩的快节奏 FPS 竞技游戏&#xff0c;可选择特色阵营&#xff0c;搭配个性化的装备&#xff0c;体验 6v6 对抗或是线性游戏模式。高品质射击竞技端游XDefiant以6v6双边对抗为核心&#xff0c;对局模式分为区域与线性两大类&a…

视频基础学习五——视频编码基础二(编码参数帧、GOP、码率等)

系列文章目录 视频基础学习一——色立体、三原色以及像素 视频基础学习二——图像深度与格式&#xff08;RGB与YUV&#xff09; 视频基础学习三——视频帧率、码率与分辨率 视频基础学习四——视频编码基础一&#xff08;冗余信息&#xff09; 视频基础学习五——视频编码基础…

【智能算法】花朵授粉算法(FPA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2012年&#xff0c;Yang等人受到自然界花朵授粉过程启发&#xff0c;提出了鸭群算法&#xff08;Flower Pollination Algorithm, FPA&#xff09;。 2.算法原理 2.1算法思想 FPA基于自然界花朵授…