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

相关推荐
allnlei11 小时前
s6-overlay - 装在 Docker 容器里的轻量级管家
java·docker·容器
一技安身16 小时前
【Docker】 镜像导出 & 导入,实验环境aarch64(arm64)Linux操作系统
linux·docker·容器
IT_Octopus17 小时前
IntelliJ 本地日志路径自定义:`-DLOG_PATH=./logs` 为什么总“不听话“
java·log4j·intellij-idea
代码村新手17 小时前
Linux调试器-gdb的使用
linux
长征coder17 小时前
【无标题】
java·性能优化
新时代牛马18 小时前
PCI与PCIe 硬件原理、配置空间/BAR 与 Linux 驱动完整篇:从 LTSSM、TLP 到 ECAM 与probe
java·linux·服务器
Bs_MoneyMagnet18 小时前
基于springboot+vue的医疗健康便民服务平台的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
sunshine22 girl19 小时前
Java学习一 环境配置2 Idea的入门使用和maven配置,项目启动脚本配置
java·maven
有点。19 小时前
*C++哈夫曼树与哈夫曼编码
java·c++·servlet
两点王爷19 小时前
解决 Linux 中 version `CXXABI_1.3.8‘ not found 报错
linux·运维·服务器