使用python自动检测tomcat运行状态并自动重启

问题描述:

最近接手了公司一套部署在tomcat上的软件系统,但是经常会出现内存溢出的问题,开发那边找不到原因,每次出问题就得重启服务,相当的麻烦,于是写了几行python代码自己检测服务并重启服务。

基本思路:

思路其实相当的简单,就是每隔一段时间访问一下服务页面,访问超时的话就直接执行tomcat的shutdown脚本和startup脚本。

完整代码:

import urllib.request
import urllib.parse  
import json
import time
import os

#访问页面
def url_open(url):
    req = urllib.request.Request(url)
    page = urllib.request.urlopen(req,timeout=15) #这里一定要设置一个超时时间,比如我遇到的内存溢出的问题不设置超时时间就会一直访问,程序就会卡在这里
    html = page.read().decode('utf8')    
    return html  

#重启tomcat服务
def restart(start,shutdown):
    print('关闭服务。。。')
    os.system(shutdown) #执行shutdown.bat
    time.sleep(10) #这里加个延时,因为执行脚本需要时间
    print('重启服务。。。')
    os.system(start) #执行startup.bat
    return False

if __name__ == '__main__' :      
    url = 'http://127.0.0.1:8080'
    #path变量是tomcat的bin目录的路径
    path = 'E:\\apache-tomcat-7.0.88-windows-x64\\apache-tomcat-7.0.88\\bin\\'
    start = path + 'startup.bat'  #linux的话把bat改为sh
    shutdown = path + 'shutdown.bat'
    a = False
    while True:
        #判断服务是否挂掉
        try:
            html = url_open(url)
        except:
            a = True #服务异常,将True赋值给a变量
        else:
            a = False #服务正常
        #服务挂掉则自动拉起服务
        if a:
            print('服务异常,尝试自动重启')
            a = restart(start,shutdown)
        time.sleep(30) #设置每次检测的间隔时间,别设置太小,不然tomcat还没起来就又重启了




注:执行脚本需要配置环境变量CATALINA_HOME(设置为tomcat的目录即可)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值