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

相关推荐
不会玩技术的技术girl1 小时前
使用Java爬虫获取京东商品评论API接口(JD.item_review)数据
java·开发语言·爬虫
计算机毕设指导62 小时前
基于Spring Boot的医院挂号就诊系统【免费送】
java·服务器·开发语言·spring boot·后端·spring·maven
Yolowuwu2 小时前
算法跟练第十一弹——二叉树
java·算法·leetcode
m0_748238922 小时前
Java面试题--设计模式
java·开发语言·设计模式
青云交3 小时前
Java 大视界 -- 区块链赋能 Java 大数据:数据可信与价值流转(84)
java·大数据·区块链·智能合约·共识机制·数据可信·价值流转
汇匠源3 小时前
如何开发一个基于Java的商城小程序?
java·小程序
115432031q3 小时前
基于SpringBoot养老院平台系统功能实现十七
java·前端·后端
众智创新团队3 小时前
Android的Activity生命周期知识点总结,详情
android·java·开发语言
&岁月不待人&3 小时前
Android 常用设计模式和实例
java·开发语言·设计模式
qq_13948428823 小时前
springboot239-springboot在线医疗问答平台(源码+论文+PPT+部署讲解等)
java·数据库·spring boot·后端·spring·maven·intellij-idea