sCfaQK.jpg
“`bash
#!/bin/bash

DATE=(date +%y%m%d%H%M%S)
stackfile=~/stackfile”
DATE”.txt #jstack file locate.
threadfile=~/threadfile”$DATE”.txt #thread file locate.

SysTouchPeriod=5 #period of loop.(seconds)
CpuTouchTimePeriod=0.5 #inner para,to define two cpu time slice.(seconds)
LimitMemUsedRate=50 #max allowed memory used,included but without %.
LimitCpuUsedRate=80 #max allowed cpu used,included but without %.
CurentMemUsedRate=”” #global init para.
CurentCpuUsedRate=”” #global init para.

#to exec jstack single Bootstrap
function jstackCtpid(){
ctpidname=$(jps -l|grep Bootstrap) #key pid name
ctpid={ctpidname% *}
jstack
ctpid >>stackfile
#top -n1bHc -p
ctpid>>threadfile
ps p
ctpid -L -o pcpu,pid,tid,time,tname,stat,psr | sort -n -k1 -r >>threadfile
}

function getMemUsedRate(){
LoadMemory=(cat /proc/meminfo | awk ‘{print 2}’)
Total=
(echo LoadMemory | awk ‘{print1}’)
Free1=(echoLoadMemory | awk ‘{print 2}’)
Free2=
(echo LoadMemory | awk ‘{print3}’)
Free3=(echoLoadMemory | awk ‘{print $4}’)

Used=`expr Total -Free1 - Free2 -Free3`
Used_Rate=`expr  Used/Total*100 | bc -l`
CurentMemUsedRate=`expr "scale=3; $Used_Rate/1.0" |bc`  

}

function getCpuUsedRate(){
CPULOG_1=(cat /proc/stat | grep ‘cpu ‘ | awk ‘{print2″ “3″ “4″ “5″ “6″ “7″ “8}’)
SYS_IDLE_1=(echoCPULOG_1 | awk ‘{print 4}’)
Total_1=
(echo CPULOG_1 | awk ‘{print1+2+3+4+5+6+7}’)

sleep CpuTouchTimePeriod

CPULOG_2=(cat /proc/stat | grep 'cpu ' | awk '{print 2" "3" "4" "5" "6" "7" "8}')
SYS_IDLE_2=(echo CPULOG_2 | awk '{print4}')
Total_2=(echoCPULOG_2 | awk '{print 1+2+3+4+5+6+7}')

SYS_IDLE=`exprSYS_IDLE_2 - SYS_IDLE_1`
Total=`exprTotal_2 - Total_1`
CurentCpuUsedRate=`expr "scale=3; 100-SYS_IDLE/$Total*100" |bc -l`

}

while :
do
ctpidname=$(jps -l|grep Bootstrap) #key pid name
if [ “ctpidname” = “” ]; then
echo no process found!
sleep
SysTouchPeriod
continue
fi
getMemUsedRate;
getCpuUsedRate;
if [ echo "CurentMemUsedRate>LimitMemUsedRate" | bc -eq 1 ]||[ echo "CurentCpuUsedRate>LimitCpuUsedRate" | bc -eq 1 ]; then
jstackCtpid;
fi
sleep $SysTouchPeriod
done

“`

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code