美文网首页Linux运维
排查线上CPU飙高

排查线上CPU飙高

作者: flyjar | 来源:发表于2022-04-08 23:04 被阅读0次

1、本案例的排查过程使用的阿里开源的Arthas工具进行的,不使用arthas,使用JDK自带的命令也是可以。

2、在开始排查之前,可以先看一下CPU的使用情况,最简单的就是使用top命令直接查看(大写P按照CPU占用率排序):

top - 10:32:38 up 11 days, 17:56,  0 users,  load average: 0.84, 0.33, 0.18
Tasks:  23 total,   1 running,  21 sleeping,   0 stopped,   1 zombie
%Cpu(s): 95.5 us,  2.2 sy,  0.0 ni, 76.3 id,  0.0 wa,  0.0 hi,  0.0 si,  6.1 st
KiB Mem :  8388608 total,  4378768 free,  3605932 used,   403908 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  4378768 avail Mem
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  
   3480 admin     20   0 7565624   2.9g   8976 S  241.2 35.8 649:07.23 java  
   1502 root      20   0  401768  40228   9084 S   1.0  0.5  39:21.65 ilogtail
   181964 root      20   0 3756408 104392   8464 S   0.7  1.2   0:39.38 java   
   496 root      20   0 2344224  14108   4396 S   0.3  0.2  52:22.25 staragentd  
   1400 admin     20   0 2176952 229156   5940 S   0.3  2.7  31:13.13 java
   235514 root      39  19 2204632  15704   6844 S   0.3  0.2  55:34.43 argusagent
   236226 root      20   0   55836   9304   6888 S   0.3  0.1  12:01.91 systemd-journ

3、可以看到,进程ID为3480的Java进程占用的CPU比较高,基本可以断定是应用代码执行过程中消耗了大量CPU,接下来开始排查具体是哪个线程,哪段代码比较耗CPU。

4、首先,下载Arthas命令:

curl -L https://arthas.aliyun.com/install.sh | sh

5、启动

./as.sh

6、使用Arthas命令”thread -n 3 -i 1000″查看当前”最忙”(耗CPU)的三个线程:


16165659820207.jpg

通过上面的堆栈信息,可以看出,占用CPU资源的线程主要是卡在JDBC底层的TCP套接字读取上。连续执行了很多次,发现很多线程都是卡在这个地方。可以分析对应的代码。从而解决CPU飙高的问题

相关文章

  • 排查线上CPU飙高

    1、本案例的排查过程使用的阿里开源的Arthas工具进行的,不使用arthas,使用JDK自带的命令也是可以。 2...

  • JAVA线上常见问题排查

    1.线上CPU飙高排查思路 一般常见的原因主要是:①死循环(while / 递归 / for循环相关等 )②锁相...

  • CPU飙高排查一般步骤

    cpu飙高肯定是有一个进程中的某一个线程在疯狂占用cpu资源,所以线上排查一般是步骤如下: top 找出cpu高的...

  • 平时碰到系统CPU飙高和频繁GC

    平时碰到系统CPU飙高和频繁GC,你会怎么排查? 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 10...

  • Java问题排查-CPU飙高

    方法一 命令行工具 查看哪些Java进程在运行 查看具体进程线程占用情况,(shift+p 按cpu排序,shif...

  • CPU 突然飙高排查思路

    1. 首先通过ps -ef | grep java 找到对应的服务的进程ID即PID 2. 然后通过 top -...

  • 排查java-CPU使用率高的问题

    记录一次线上排查CPU使用高的问题 使用top命令找到占用CPU高的进程PID 显示线程列表 使用 找到占用CPU...

  • Java应用线上CPU飙高

      说明:曾经遇到过的一个线上实际问题,Demo是经过加工刻意重现,线上调试问题已经开发和运维人员的基本技能,在此...

  • ES问题排查及优化

    一、背景最近有报es搜索超时异常,服务器CPU飙高(达130%到),于是开始进行排查 二、排查1.项目组设置接口请...

  • JAVA线上常见问题排查CPU飙高内存打满排查

    首先执行最简单的四步骤,再逐步检查 {PID} 为实际Java在服务器中的进程ID一般为服务器排名第一的那个Jav...

网友评论

    本文标题:排查线上CPU飙高

    本文链接:https://www.haomeiwen.com/subject/vbeusrtx.html