目录

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+(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=((topbn1p(top -bn 1 -p pid -H|sed -n '8,12p'|awk '{print $1}'))

cpu={PACPU\[i+1]}

file=pidpid-(date '+%Y%m%d%H%M%S').log

echo "print process pid,tids=pid, tids={tids[*]}, cpu=cpu,file=cpu, file=file"

for tid in ${tids[*]}

do

printf "nid=0x%x\n" tidtid \>\> file

done

jstack -l pidpid \>\> file

done

fi

sleep 10s

done

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
ThisIsClark13 分钟前
【玩转正则表达式】Python、Go、Java正则表达式解释器的差异解析(附示例)
java·python·golang·正则表达式
New_Teen16 分钟前
正则表达式小结
linux·笔记·学习·正则表达式
blammmp1 小时前
Java EE 进阶:Spring Boot 日志
java·spring boot·java-ee
JafarOne1 小时前
手机端Flutter、React Native与原生安卓、iOS交互的方案及设计原理
android·java·flutter·react native·ios·智能手机
可问 可问春风4 小时前
Linux 找回 Root 密码(多发行版本)
linux·运维·chrome
拾忆,想起4 小时前
Nacos命名空间Namespace:微服务多环境管理的“秘密武器”如何用?
java·运维·spring boot·spring cloud·微服务·架构
lllsure5 小时前
【快速入门】MyBatis
java·后端·mybatis
爱学习的学姐6 小时前
【精品源码】Java宠物领养网站+SpringBoot+VUE+前后端分离
java·spring boot·宠物
木子欢儿6 小时前
Debian系统清理垃圾
linux·运维·服务器·debian
字节源流6 小时前
【SpringMVC】常用注解:@SessionAttributes
java·服务器·前端