目錄
寫在前面
最近公司有一個項目偶爾(無規律可循)會出現響應時間過長導致應用宕機的情況。由於公司開發資源緊張。一時間研發沒有時間處理該問題。所以想着通過判斷應用的響應時間來重啓應用
具體腳本如下
#!/bin/bash
#通過curl獲取應用響應時間
time_total=`curl -o /dev/null -s -w '%{time_connect}:%{time_starttransfer}:%{time_total}\n' 'www.baidu.com' | awk -F ':' '{print $3}'`
#獲取應用項目進程ID
tomcatpid=`ps -ef | grep apache-tomcat-6.0.35 | grep -v grep | grep -v /usr/local/sbin/cronolog | awk '{print $2}'`
echo "time_total應用響應時間爲:$time_total"
echo "tomcat項目進程ID爲:$tomcatpid"
#設置最大響應時間
time_total_maximum=5.00
c=$(echo "$time_total > $time_total_maximum" | bc)
#判斷響應時間
#然後做判斷1爲真0爲假
if [ $c -eq 1 ]
then
#echo 'time_total大於time_total_maximum'
echo "響應時間大於5"
echo "執行重啓Tomcat操作"
#殺進程
kill -9 $tomcatpid
sleep 3
echo "$tomcatpid已殺死..."
echo "重啓tomcat..."
/XXXX/XXXX/XXXX/bin/startup.sh #Tomcat啓動路徑
else
echo 'time_total小於等於time_total_maximum'
echo "響應時間正常"
fi
腳本編入定時任務
#每三十分鐘執行一次
*/30 * * * * /XXX/sh/tomcat-check-restart.sh >> /XXX/sh/tomcat-check-restart.log 2>&1
寫在後面
當然此非長久之計。還是需要通過代碼分析定位具體問題。然後徹底解決掉!