gaofeiseu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

当javaweb服务不可用时(访问网页时无法正常获取页面),怎样自动重启对应的javaweb服务使其恢复正常?

如果你也遇到上面这种问题,那接下来不妨是一种简便的解决方案,它能够在应用不可用时自动向你保留的邮箱发送邮件进行提示,并尝试杀掉已有的不可用的javaweb应用线程并将其重启。

环境介绍:linux weblogic

#!/bin/sh
echo "guard service start"
result=""
while :
do
    n=0
    for b in {1..4}#进行4次尝试,如果4次尝试都失败,则说明当前应用状态不可用
    do
        result=`curl --connect-timeout 1.5 -m 1.5 -o /dev/null -s -w %{http_code} "http://你的javaweb应用的网址"`
        if [ $result -eq "200" ]
        then
            break
        else
            let n+=1
            continue
        fi
    done
    if [ $n -gt 0 ]
    then
        echo "prepare to send email and restart weblogic."
        TIME=`date '+%Y-%m-%d %H:%M:%S'`
        result=`sendEmail -f 已经开通SMTP服务的发件的邮箱bcd@bcd.com -t 你的邮箱abc@abc.com -s 发件邮箱的STMP服务器域名比如stmp.sina.com -u "javaweb应用系统发生错误" -xu 发件的邮箱的用户名bcd@bcd.com -xp 发件的邮箱的密码password -m 邮件正文写在这里 $TIME`
        echo $result
        echo "send email completed!"
        result=`ps -ef|grep weblogic.Server|grep -v grep|cut -c 9-15|xargs kill -9`#这里用weblogic举例,其他情况类似
        echo $result
        cd /home/weblogic/Oracle/Middleware/user_projects/domains/abc_domain/ && nohup ./startWebLogic.sh &
        sleep 240s#给予服务重启时间,再进行下次探测
        continue
    else
        echo "web server is good,waiting for next loop."
        sleep 120s#服务正常时探测周期设置为2分钟
        continue
    fi
done
echo "guard service quit"

上面的36行shell脚本就能实现linux下对指定javaweb服务进行服务可用性守护的功能,当发现服务不可用时,发送邮件告诉管理员并尝试挽救服务。

当然,想要发送邮件,你的linux服务器还需要具有某些特质,比如这篇文章里说的这个东西,你要安装。。。

http://blog.csdn.net/zhuying_linux/article/details/7091688

posted on 2015-11-20 11:18  gaofeiseu  阅读(479)  评论(0)    收藏  举报