当cpu load大于5的时候,自动打印cpu load详细情况以及jstack和heap
#!/bin/bash
touch cpu_load_monitor.log
cpu_load_value=5
do_while_flag=true
while $do_while_flag
do
load_average=`w | grep 'average' | cut -d',' -f4 | cut -d':' -f2 | cut -d' ' -f2`
echo "check cpu load. load1=${load_average}, time=$(date '+%Y-%m-%d %H:%M:%S')" >> cpu_load_monitor.log
if [ $load_average \> $cpu_load_value ]
then
do_while_flag=false
msg="------cpu load alarm! ""load1 = ${load_average}, time=$(date '+%Y-%m-%d %H:%M:%S')------"
echo $msg >> cpu_load_monitor.log
####打印线程cpu load快照
top -H -bn 1 > cpu_load_detail_snapshot.txt
jps_pid=`ps x|grep java|grep -v pts|awk '{print $1}'`
####打印jstack
echo "start to dump threads stack...pid = ${jps_pid}" >> cpu_load_monitor.log
t_file="jstack_${jps_pid}.txt"
jstack -l $jps_pid > $t_file
####打印heap
##echo "start to dump heap stack...pid = ${jps_pid}" >> cpu_load_monitor.log
##h_file="jheap_${jps_pid}.dump"
##jmap -dump:format=b,file=${h_file} $jps_pid
echo "------task end------" >> cpu_load_monitor.log
fi
sleep 2
done
本文介绍了一个使用bash脚本实现的CPU负载监控系统。当CPU负载超过预设阈值时,该系统会记录详细的CPU负载信息,并进一步获取当前系统的线程快照、Java进程堆栈信息及内存堆信息,以便于进行后续的故障诊断和性能优化。
2893

被折叠的 条评论
为什么被折叠?



