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

相关推荐
南烟斋..9 分钟前
Linux进程管理完全指南:创建、终止、回收与替换
linux·算法
sunon_10 分钟前
解决linux系统PDF中文乱码问题
linux·运维·pdf
BJ_bafangonline14 分钟前
Xmanager怎么显示远程linux程序的图像?
linux·运维·服务器
雨雨雨雨雨别下啦15 分钟前
Spring AOP概念
java·后端·spring
on the way 12315 分钟前
day04-Spring之Bean的生命周期
java·后端·spring
代码笔耕17 分钟前
面向对象开发实践之消息中心设计(二)
java·后端·架构
云水木石26 分钟前
Rust 语言开发的 Linux 桌面来了
linux·运维·开发语言·后端·rust
要开心吖ZSH33 分钟前
应用集成平台-系统之间的桥梁-思路分享
java·kafka·交互
TsengOnce36 分钟前
阿里云ECS多版本JDK切换
java·python·阿里云
wearegogog12339 分钟前
基于C#的FTP客户端实现方案
java·网络·c#