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

相关推荐
老兵发新帖几秒前
Ubuntu版本nvidia-smi提示版本不匹配问题,解决办法
linux·chrome·ubuntu
酉鬼女又兒2 分钟前
Linux快速入门指南:常用快捷键➕命令行高效操作
linux·运维·服务器
tianyuanwo4 分钟前
Jenkins节点编码环境深度解析:从配置到Java Web连接原理
java·jenkins·语言编码
Fanxt_Ja4 分钟前
多线程之ES同步数据
java·大数据·elasticsearch·搜索引擎
没有bug.的程序员6 分钟前
Docker 与 K8s 生产级实战:从镜像极致优化到集群自动化部署全流程
spring cloud·docker·kubernetes·自动化·k8s·镜像·集群自动化
CodeToGym9 分钟前
【全栈进阶】Spring Boot 整合 WebSocket 实战:从实时告警到金融行情推送
java·后端·spring
张3蜂10 分钟前
java springboot2.0 api ;.netcore8 api ;python GunicornAPI ,哪种更强?请从多个维度,对比分析
java·python·.netcore
林shir10 分钟前
3-19-项目部署(Linux)
linux·运维·服务器
顶点多余11 分钟前
Linux第一个系统程序-进度条
linux·运维·服务器
x-cmd13 分钟前
[x-cmd] Wine 11.0 史诗级发布:Linux 运行 Windows 应用和游戏进入“完全体”时代
linux·windows·游戏