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

相关推荐
鹏大师运维4 分钟前
中科方德鸳鸯火锅平台使用教程:轻松运行Windows应用!
linux·windows·国产操作系统·统信uos·中科方德·麒麟2503·鸳鸯火锅
编程、小哥哥16 分钟前
Java求职面经分享:Spring Boot到微服务,从理论到实践
java·hadoop·spring boot·微服务·kafka
shylyly_1 小时前
Linux环境基础开发工具->vim
linux·运维·编辑器·vim·centos 7·vim配置·底行模式
有梦想的攻城狮1 小时前
spring中的BeanFactoryAware接口详解
java·后端·spring·beanfactory
若汝棋茗1 小时前
C#在 .NET 9.0 中启用二进制序列化:配置、风险与替代方案
java·c#·.net·序列化
通达的K1 小时前
Java的常见算法和Lambda表达式
java·数据结构·算法
liubo666_1 小时前
JVM梳理(逻辑清晰)
java·jvm·后端
一刀到底2111 小时前
java 在用redis 的时候,如何合理的处理分页问题? redis应当如何存储性能最佳
java·开发语言·redis
软考真题app1 小时前
软件设计师考试三大核心算法考点深度解析(红黑树 / 拓扑排序 / KMP 算法)真题考点分析——求三连
java·开发语言·算法·软考·软件设计师
暖苏1 小时前
SpringCloud Alibaba微服务-- Sentinel的使用(笔记)
java·spring boot·spring cloud·微服务·sentinel·微服务保护·服务熔断