iis服务器助手广告
返回顶部
首页 > 资讯 > 服务器 >服务器CPU飚高排查
  • 588
分享到

服务器CPU飚高排查

开发语言javalinux 2023-09-01 16:09:47 588人浏览 薄情痞子
摘要

排查思路 当正在运行的Java服务导致服务器的CPU突然飙高时,我们该如何排查定位到哪个接口的哪行代码导致CPU飙高的问题呢?我主要提供两个方案: jstackarthas 准备工作 代码准备 现在需要准备一段可以让服务器CPU飙高的代码以

排查思路

当正在运行的Java服务导致服务器的CPU突然飙高时,我们该如何排查定位到哪个接口的哪行代码导致CPU飙高的问题呢?我主要提供两个方案:

  • jstack
  • arthas

准备工作

代码准备

现在需要准备一段可以让服务器CPU飙高的代码以及把代码部署到服务环境。

@RestController@RequestMapping("/test")public class TestController {    @GetMapping("top")    public void test() {        while (true) {        }    }}
打包

使用Maven打包或者Docker服务将代码部署到服务器。

#整流程mvn cleanmvn compilemvn package

idea中为:

简单部署
java -jar demo1-0.0.1-SNAPSHOT.jar > demo.log &

jstack

jstack 是 jdk 提供的一个命令行工具,用于生成 Java 进程的线程转储信息(也称为线程快照)。它可以帮助诊断和调试 Java 应用程序的线程相关问题,如死、线程等待、线程占用CPU过高等。

jstack 命令可以在运行中的 Java 进程上执行,它会输出当前 Java 进程中所有线程的堆栈跟踪信息。这些信息包括每个线程的方法调用栈、锁信息、线程状态等。

以下是 jstack 的一些常见用途和作用:

  • 线程分析:jstack 生成的线程转储信息可以显示 Java 进程中所有线程的堆栈跟踪信息。您可以查看每个线程的调用栈,了解线程执行的代码路径和方法调用关系。
  • 死锁检测:通过查看线程的锁信息,jstack 可以帮助您发现是否存在死锁情况。它会显示每个线程当前持有的锁和等待的锁,以及导致死锁的锁依赖关系。
  • 线程等待:jstack 可以显示线程的等待状态,帮助您确定是否存在线程等待某个资源的情况。这对于排查程序在运行时出现的卡死或长时间无响应问题非常有用。
  • CPU 使用分析:通过查看线程的 CPU 使用情况,jstack 可以帮助您确定哪些线程消耗了大量的 CPU 资源,找出可能导致 CPU 占用过高的原因。
  • 线程状态监控:jstack 提供了对线程状态的监控,您可以了解线程的状态,如运行、阻塞、等待等,以便更好地理解应用程序的运行情况。
获取CPU飙高的进程PID

top命令用于监视 linux 系统的实时进程和系统性能信息。那么我们可以通过top命令来实时定位到那个线程占用大量CPU资源。

输入命令:

top

可以看到PID列中进程id为8066的进程CPU占用率达到了98.7%,那么我们接下来排查的就是这个进程。

定位进程中的问题线程
top -H -p PID 

该命令的作用是在 top 工具中显示指定进程ID(PID)的线程级别信息。它将以线程级别的模式显示指定进程的各个线程的详细信息。

具体解释如下:

  • -H 选项指示 top 以线程级别的模式显示信息。
  • -p pid 选项指定需要显示信息的进程ID(PID)。在这个例子中,PID 为 8066 的进程的线程信息将被显示。

将PID进程号转为16进制

以上已定位具体线程pid导致CPU飙高,那么将指定pid转换为16进制,以便下一步定位具体线程问题使用。

将一个十进制的进程ID(PID)转换为十六进制格式的字符串,可以使用 printf 命令来实现。printf 命令可以根据指定的格式将数据进行格式化输出。

printf '0x%x\n' pid
定位指定线程问题
jstack pid | grep hexadecimal -A N

具体解释如下:

  • jstack pid 用于执行 jstack 命令并生成线程转储信息。
  • | 是管道符号,将 jstack 命令的输出传递给下一个命令。
  • grep hexadecimal 表示使用 grep 命令来匹配包含 "hexadecimal" 的行。
  • -A N 选项指定在匹配到的问题代码行后显示 N 行内容。

那么可以很快定位到是TestController类第20行出现了问题。

那么我们看代码:

arthas

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、GC、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

下载
curl -O https://arthas.aliyun.com/arthas-boot.jar
运行
java -jar arthas-boot.jar --repo-mirror aliyun --use-Http

运行时arthas会提示用户选择哪个Jar服务,那么我们选择【1】,按1即可。

开始监控。

排查占用最高的线程
thread -n 1

使用arthas可以更快定位问题代码行。

更多使用技巧请参考官方文档:

Arthas

来源地址:https://blog.csdn.net/weixin_42313773/article/details/132396601

--结束END--

本文标题: 服务器CPU飚高排查

本文链接: https://www.lsjlt.com/news/388986.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 服务器CPU飚高排查
    排查思路 当正在运行的Java服务导致服务器的CPU突然飙高时,我们该如何排查定位到哪个接口的哪行代码导致CPU飙高的问题呢?我主要提供两个方案: jstackarthas 准备工作 代码准备 现在需要准备一段可以让服务器CPU飙高的代码以...
    99+
    2023-09-01
    开发语言 java linux
  • linux服务器CPU飙高排查分析
    目录前言一、第一步 top二、根据pid查找具体线程总结前言 系统cpu飙高,尤其对于后端人员来说,其实应该学会排查,这样也算是综合能力的体现;那么当出现了cpu严重飙高的时候怎么排...
    99+
    2023-01-13
    linux服务器CPU高 linux服务器CPU高排查 linux服务器CPU排查 linux服务器CPU
  • 【Java】 服务器cpu过高如何排查和解决?
    文章目录 前言一、常见能够引起CPU100%异常的情况都有哪些?二、服务器CPU使用率飙升异常,黄金4步排查法三、排查 CPU 故障的常用命令四、什么场景会造成 CPU 低而负载确很高呢?五、...
    99+
    2023-09-01
    java 服务器 开发语言
  • Oracle怎么排查CPU占用过高的排查
    本篇内容主要讲解“Oracle怎么排查CPU占用过高的排查”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle怎么排查CPU占用过高的排查”吧!  CPU...
    99+
    2024-04-02
  • 【Java高CPU占用排查步骤】
    Linux环境下 当Java应用程序在Linux系统上的CPU使用率达到100%时,可能会导致系统响应变慢,甚至无响应,影响应用程序的正常运行。下面是排查Java应用程序CPU使用率高的步骤: 1、使用top命令查看Java进程的CPU使用...
    99+
    2023-08-16
    java
  • java 程序cpu占用过高排查
    1、top命令查看cpu占用最高程序 top 取得cpu占用最高的PID: 27791 2、判断java程序是直接运行在宿主机还是在容器中 方式一 cgroup cat /proc//cgroup 如果输出中包含有类似 /docker/...
    99+
    2023-09-20
    java
  • Java程序占用CPU过高排查
    使用 top 命令查看高CPU进程,执行命令后可以按 1 键查看各CPU 内核负载情况。CPU使用率主要看us、sy两个指标。 假设 10760 是一个高CPU的进程。 使用 top -H ...
    99+
    2023-09-22
    jvm jstack Powered by 金山文档
  • 排查CPU使用率高Lsass.exe问题
    Lsass.exe(Local Security Authority Subsystem Service)是Windows操作系统中...
    99+
    2023-09-08
    CPU
  • java怎么排查cpu高的原因
    要排查Java程序中CPU高的原因,可以按照以下步骤进行:1. 监视CPU使用率:使用操作系统的工具(如Windows任务管理器、L...
    99+
    2023-09-09
    java
  • 排查WMI CPU使用率过高问题
    排查WMI CPU使用率过高问题的步骤如下:1. 确认问题:首先,确认系统的CPU使用率确实过高。可以通过任务管理器或性能监视器来查...
    99+
    2023-09-13
    CPU
  • Linux系统CPU使用率过高的排查技巧
    本篇内容介绍了“Linux系统CPU使用率过高的排查技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下面,介绍几个 CPU 使用率过高的排...
    99+
    2023-06-16
  • oracle服务器的CPU占用率一直100%排查方式
    背景说明 公司开发、测试、演示环境,三个环境的oracle服务器无论服务器是否空闲, CPU的占用率一直是100%, 一直也没有找到问题原因,今天就花了一整天时间研究这个问题。 通过AWR报告查看or...
    99+
    2023-09-06
    oracle 服务器 数据库
  • arthas排查jvm中CPU占用过高问题解决
    目录安装 小试找出CPU的元凶查看线程栈的参数安装 小试 记一次使用arthas排查jvm中CPU占用过高问题。这工具屌爆了 碾压我目前使用的全部JVM工具。 curl -O htt...
    99+
    2024-04-02
  • MySQL占用CPU过高,排查原因及解决方案
    目录一、mysql中的wait_timeout坑1、第一种修改方式 需重启MySQL(6.5为例)2、第二种修改方式 不需重启MySQL(数据库重启就失效)二、排查有没有地方占用SQL资源过多其中state的状态十分关键...
    99+
    2022-12-22
    MySQL占用CPU MySQL占用CPU过高 MySQL占用CPU原因
  • Linux下如何排查占用CPU很高的Java程序
    这篇文章主要为大家展示了“Linux下如何排查占用CPU很高的Java程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何排查占用CPU很高的Java程序”这篇文章吧。jstack...
    99+
    2023-06-28
  • Linux系统CPU占用率较高问题排查思路
    作为工程师,在日常工作中我们会遇到 Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行,带来企业损失。 对于CPU过载问题通常使用以下两种方式即可快速定位: 方法一 第一步:使...
    99+
    2023-09-02
    linux 服务器 java Powered by 金山文档
  • 查看云服务器CPU核数
    云服务器的CPU核心数是其性能的重要指标之一,因此,如何查看云服务器的CPU核数就变得尤为重要。云服务器CPU核数,一般登录云服务器提供商的控制管理台就可以查看。除了CPU,其它配置参数大小也能查看,包括内存、带宽、硬盘等等。 一般来说,...
    99+
    2024-04-02
  • 阿里云服务器查看cpu
    首先,阿里云服务器的CPU使用率是衡量服务器性能的重要指标。CPU使用率过高会导致系统运行缓慢,影响用户体验和数据安全。如果服务器CPU使用率过高,需要采取措施降低CPU使用率,例如升级硬件、优化服务器配置等。 其次,阿里云服务器的CPU...
    99+
    2023-10-27
    阿里 服务器 cpu
  • 云服务器CPU怎么查看
    CPU的核心数可以用来衡量云服务器CPU的性能。目前,最常见的云服务器CPU核心数为双核心、四核心、八核心等。不同的云服务器厂商所提供的CPU核心数也不尽相同,但是总体来说,云服务器CPU的核心数越多,其处理能力也就越强,能够更好地应对高并...
    99+
    2023-10-28
    服务器 CPU
  • Linux系统CPU占用率较高问题怎么进行排查
    本篇内容介绍了“Linux系统CPU占用率较高问题怎么进行排查”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!很多运维的同学遇到这种状况往往会...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作