CPU瞬时冲高自动监测打印进程栈信息和线程ID脚本

背景:

1.生产环境某个应用CPU偶发瞬时冲高情况,每次持续2-5分钟,运维人员来不及立马定位原因

2.pod应用,没有添加到集成监控系统中,需要自己想办法监测

3.pod应用中不让安装crontab工具

脚本内容如下:

#!/bin/bash

while [ true ]
do
    cpu=$(top -bn 1| sed -n '3p'|awk '{print $2}')
  echo "$(date '+%Y%m%d%H%M%S'): 间隔10s检索CPU情况,CPU=$cpu"
  if [[ `expr $cpu \> 60` == 1 ]]; then
    echo "cpu surge, find process, cpu=$cpu"
    PACPU=($(top -bn 1|grep java| sed -n '1,5p'|awk '{print $1,$9}'))
    echo "${PACPU[*]}"
    len=${#PACPU[*]}
    for ((i=0;i<$len;i+=2))
    do
      pid=${PACPU[$i]}
      tids=($(top -bn 1 -p $pid -H|sed -n '8,12p'|awk '{print $1}'))
      cpu=${PACPU[$i+1]}
      file=$pid-$(date '+%Y%m%d%H%M%S').log
      echo "print process $pid, tids=${tids[*]}, cpu=$cpu, file=$file"
      for tid in ${tids[*]}
      do
        printf "nid=0x%x\n" $tid >> $file
      done
      jstack -l $pid >> $file
    done
  fi
  sleep 10s
done

相关推荐

  1. 进程线

    2023-12-25 06:24:08       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-25 06:24:08       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-25 06:24:08       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-25 06:24:08       87 阅读
  4. Python语言-面向对象

    2023-12-25 06:24:08       96 阅读

热门阅读

  1. 前端---初始常用的 html 标签

    2023-12-25 06:24:08       65 阅读
  2. List 流的使用

    2023-12-25 06:24:08       52 阅读
  3. 【Python】Python 批量转换PDF到Excel

    2023-12-25 06:24:08       55 阅读
  4. UE 动画系统框架介绍及使用

    2023-12-25 06:24:08       59 阅读
  5. python入门实战经典15题

    2023-12-25 06:24:08       47 阅读
  6. SpringBoot Gateway整合过程中的问题

    2023-12-25 06:24:08       78 阅读
  7. Spring DefaultListableBeanFactory源码分析

    2023-12-25 06:24:08       52 阅读