CPU飙升 怎么定位问题

news2024/9/20 16:59:55

传统的方法

【top】

查看所有进程占系统CPU的排序,定位是哪个进程搞的鬼。PID那一列就是进程号。

【top -Hp pid】

定位进程中使用 CPU 最高的线程tid

【printf ‘0x%x’ tid】

线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882    得到16进制的   0x2e6a

【jstack pid | grep tid 】找到线程堆栈,例如jstack  11763 | grep 0x2e6a -A 30

查问题时,会要多次上面的操作以分析确定问题,这个过程太繁琐太慢了
期望整合上面的过程成一个脚本,这样一行命令就可以自动化地搞定。

脚本方法

【wget --no-check-certificate https://gitee.com/fightx/useful-scripts/raw/dev-2.x/bin/show-busy-java-threads】

这条命令使用wget工具从gitee下载一个名为show-busy-java-threads的脚本文件。--no-check-certificate选项表示不检查SSL证书的有效性,这在某些情况下可能是必要的,但通常不推荐使用,因为它可能会导致安全风险。

【head -n 10 show-busy-java-threads】

检查下载下来的内容是否是脚本

【chmod +x show-busy-java-threads】

这条命令使用chmod工具赋予刚刚下载的show-busy-java-threads脚本可执行权限,使得它可以在命令行中直接运行。

【./show-busy-java-threads】

这条命令执行刚刚下载并赋予可执行权限的show-busy-java-threads脚本。这个脚本的作用是查找并显示系统中正在运行的Java进程中占用CPU资源最多的前5个线程。

分析步骤

  1. 识别高CPU消耗线程

    • 查看输出中每个线程的CPU占用百分比(例如,Busy(98.2%))。

    • 高CPU消耗的线程通常是性能瓶颈的潜在来源。

  2. 查看线程ID和名称

    • 每个线程都有一个线程ID(例如,29385)和名称(例如,"main")。

    • 这些信息有助于你识别具体的线程。

  3. 分析线程状态

    • 查看线程状态(例如,RUNNABLETIMED_WAITING)。

    • RUNNABLE状态表示线程正在运行或准备运行,而TIMED_WAITING状态表示线程在等待某个条件。

  4. 检查线程堆栈

    • 查看线程堆栈跟踪(例如,at com.example.MyClass.busyMethod(MyClass.java:42))。

    • 堆栈跟踪显示了线程当前执行的方法和代码行,有助于定位问题代码。

  5. 定位问题代码

    • 根据堆栈跟踪信息,找到具体的Java类和方法。

    • 检查这些方法的实现,看看是否有优化的空间或潜在的性能问题。

  6. 更多用法参照:docs/java.md · fightx/useful-scripts - Gitee.com

阿里开源方法

【curl -O https://arthas.aliyun.com/arthas-boot.jar】

 下载jar包

【java -jar arthas-boot.jar】

启用

在启动Arthas时,它会列出当前系统中正在运行的Java进程,并要求你选择一个进程进行监控。你需要输入进程的序列号(例如,输入1选择第一个进程),然后按回车键。

【thread -n 5】

进一步分析【thread id】

如果你发现某些线程的CPU使用率异常高,可以进一步分析这些线程的堆栈跟踪,以确定具体的性能瓶颈。例如,你可以使用以下命令来查看特定线程的堆栈跟踪:

其他命令参考官网:arthas: Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具

点赞收藏加关注

下一期创作内容:通过上述步骤,找出有问题的代码之后,观察到线程栈之后。怎么根据具体问题来具体分析

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

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

相关文章

Spring——IOC/DI思想

1、IOC(Inversion of Control)控制反转 何为控制反转? 在业务层中我们如果要调用数据层的方法那么必然牵扯到对象的创建,如果我想要改变上述数据层的方法中的内容,那么我就要改变业务层的代码,重新创建对…

R语言的矩阵运算

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容,每篇文章都在 5000 字以上,质量平均分高达 94 分,看全文请点击下面链接: 3章4节:R的逻辑运算和矩阵运算-CSDN博客文章浏览阅读165次。在 R 语言的丰…

PHP概述、环境搭建与基本语法讲解

目录 【学习目标、重难点知识】 什么是网站? 1. PHP 介绍 1.1. PHP 概述 1.1.1. PHP 是什么? 1.1.2. PHP 都能做什么? 1.2. PHP 环境搭建 1.2.1. PhpStudy 2. PHP 基本语法 2.1. PHP 语法入门 2.1.1. 第一个 PHP 程序 2.1.2. PHP …

Postman入门指南

前言 当前最为主流的开发模式:前后端分离 在这种模式下,前端技术人员基于"接口文档",开发前端程序;后端技术人员也基于"接口文档",开发后端程序。 由于前后端分离,对我们后端技术人…

PHP 无参数RCE总结

在这篇文章中,我总结了在参与CTF比赛过程中积累的关于PHP无参数远程代码执行(RCE)的经验。由于一直以来时间有限,今天终于有机会整理这些知识点。 可能用到的函数(PHP的内置函数) localeconv() 函数返回一…

String 事务

目录 一、什么是事务 二、Spring事务的实现方式 1、编程式事务 2、声明式事务 三、自动操作事务的注解的三个属性 1、rollbackFor 2、isolation 3、propagation 前言:本文所见围绕的主题是事务,所以笔者先讲解什么是事务,先让大家了解…

Selenium + Python 自动化测试15(模块化测试)

我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了使用SMTP 对象的sendmail 发送HTML报告的方法。 本篇文章我们接着讲测试代码的一些优化,提高我们测试代码的易读性,维护方便性。大家也…

ZooKeeper 集群的详细部署

ZooKeeper 集群部署 一、ZooKeeper 简介1.1 什么是 ZooKeeper1.2 ZooKeeper 特点 二 ZooKeeper 的架构和设计4.1 ZooKeeper 数据模型4.1.1 Znode 节点特性 三、ZooKeeper 的集群安装前准备工作3.1 需要的准备工作3.2 Linux 系统 3 个节点准备3.2.1 克隆3.2.2 配置另外两台服务器…

评论系统如何不崩溃?揭开海量评论背后的技术秘密

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好,我是小米!今天我们来聊聊一个非常实际的场景:海量新闻评论的入库问题。假设你在某个新闻平台工作,某条热门新闻突然火爆,用户的评论量如潮水…

SpringBoot Web开发(请求,响应,分层解耦)

Author_T17🥥 目录 一.请求响应概述 1.Servlet 2.DispatcherServlet 3.请求响应工作概图 4.BS/CS架构 二.API测试工具 三.请求 1.简单参数 (1)原始方式(不推荐) ​编辑 (2)Spring Boo…

【剑指 offer】删除链表中重复的结点

目 录 描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5 思路: 通过快慢…

2024年阳光电源社招校招入职测评:前程无忧智鼎题库全解析

在职场竞争日益激烈的今天,企业对人才的选拔标准越来越高。阳光电源,作为行业的领军企业,采用了前程无忧智鼎题库进行社招校招入职测评,旨在通过科学的方法选拔出与企业文化和价值观高度契合的人才。 测评概览 测评名称&#xff1…

大模型RAG企业级项目实战:Chatdoc智能助手文档(从零开始,适合新手)

大模型RAG企业级项目实战:Chatdoc智能助手文档(从零开始,适合新手) 大模型RAG企业级项目实战完整链接 LLM模型缺陷: ​ 知识是有局限性的(缺少垂直领域/非公开知识/数据安全) ​ 知识实时性(训练周期长、成本高) …

5计算机网络全面解析

网络功能和分类 计算机网络是计算机技术与通信技术相结合的产物,它实现了远程通信、远程信息处理和资源共享。 计算机网络的功能:数据通信、资源共享、管理集中化、实现分布式处理、负载均衡。 网络性能指标:速率、带宽(频带宽…

1.微服务发展阶段

单体应用阶段 简介 系统业务量很小的时候我们把所有的代码都放在一个项目中,然后将这个项目部署在一台服务器上,整个项目所有的服务都由这台服务器去提供 优点 1.展现层、控制层、持久层全都在一个应用里面,调用方便、快速,单个请…

Unity URP 曲面细分学习笔记

Unity URP 曲面细分学习笔记 1.曲面细分与镶嵌1.1 外壳着色器 Hull Shader1.2 镶嵌器阶段 Tessellator1.3 域着色器阶段 Domain Shader 2.具体实现2.1 不同的细分策略2.1.1 平面镶嵌 Flat Tessellation2.1.2 PN Tessellation(Per-Node Tessellation)2.1.…

NPM使用教程:从入门到精通

NPM使用教程:从入门到精通,掌握Node.js包管理神器 引言 随着Node.js的流行,JavaScript已经成为服务器端开发的主力军。NPM(Node Package Manager)作为Node.js的官方包管理工具,为开发者提供了一个庞大的代…

用R的界面来安装扩展包

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容,每篇文章都在 5000 字以上,质量平均分高达 94 分,看全文请点击下面链接: 2章4节:认识和安装R的扩展包,什么是模糊搜索安装,工…

Linux高级编程 8.12 标准IO

目录 一、标准io 二、文件 三、man手册 四、操作文件 1.fopen 2.fputc 3.fgetc 4.fgets 5.fputs 6.fread 7.fwrite 五、命令解读 1.显示目录下的文件信息命令 2.vimdiff小工具 3.stat命令 一、标准io IO: input output I: 键盘是标准输…

吃透张宇18讲+1000题,最后能考到110+吗?

张宇18讲太难了怎么办? 当然是换一本 不难的,张宇18讲的难度确实超过大多数同学能够接受的程度,张宇老师也说,默认大家基础已经很好,所以,如果你想很好的利用张宇18讲,必须要有一个一个很好的基…