文档章节

根据url判断tomcat假死,并重启,pyhton

h
 ht1988
发布于 2016/10/09 15:11
字数 410
阅读 58
收藏 0

    最近发现测试环境tomcat假死现象,测试环境扩容可能性又不大就写了个脚本用来监控tomcat是否假死。如果假死的话则重启。主要是根据url判断,判断返回值是不是200,设置了超时时间为10秒。如果要用该脚本,把启动tomcat脚本路径和测试url改一下即可,还是比较强壮的。

#!/usr/bin/python
# coding=utf-8

import os
import urllib
import commands
import time
import socket

# 定义时间变量
date_now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
# 定义启动脚本路径
StartTomcat = "/home/apps/tomcat/bin/startup.sh"
# 定义测试URL
WebUrl = "http://127.0.0.1:8080/kafka/"
# 获取进程ID,里面多了个grep -V check_tomcat,是因为脚本名里面有tomcat关键字,会多检测出一个进程出来,要排除掉。
process_id = commands.getoutput("ps -ef|grep tomcat |grep -v check_tomcat|grep -v grep|awk '{print $2}'")

# 设置URL超时时间
socket.setdefaulttimeout(5)

def tart_tomcat(pid):  # 定义重启方法
    pid = int(pid)
    try:
        print date_now, "reboot-tomcat:"
        os.kill(pid, 9)
        time.sleep(5)
        print "开始执行startup.sh"
        os.system(StartTomcat)
    except IOError, e:
        print e


def check_tomcat():  # 定义检查tomcat方法
    print "----------------------------"
    print date_now, "开始检查 tomcat..."
    if process_id:  # 如果存在进程ID则往下执行
        print "进程已存在,检测url是否能访问..."
            #判断是否返回200,另外有可能有其他报错,所以这里用try来写,防止有别的错误。
            try:
            response_code = urllib.urlopen(WebUrl).getcode()
            if response_code == 200:
                print "URL访问正常无需重启tomcat..."
            else:
                restart_tomcat(process_id)
        except IOError:
            restart_tomcat(process_id)
    else:
        print "进程不存在,开始执行startup.sh"
        os.system(StartTomcat)


check_tomcat()

 

© 著作权归作者所有

共有 人打赏支持
h
粉丝 0
博文 2
码字总数 660
作品 0
南京
私信 提问
【小工具】shell检测进程状态异常自动重启(补OOM检测重启)

会shell脚本是一个运维人员的基本功,在平时工作中,为处理一些异常或者查询数据,我经常要写shell脚本来自动化处理。 这边分享一个我写的检测进程状态并自动重启的脚本,很简单,欢迎大家使...

tryagaintry
2018/06/21
0
0
关于Websphere 会话管理若干奇葩问题

引言 由于最近在做应用集成平台,即实现独立部署的WAR包可以在同一个集成平台中访问。被集成的业务组件为什么可以在集成平台实现页面集成,主要通过以下几个步骤实现: ①用户登录集成平台系...

stamen
2015/12/09
857
0
ubuntu下的tomcat监控脚本

前提 1、需要服务器中安装sendemail以及mailutils插件,具体操作请转度娘 2、需要使用cron添加定时任务,我设置的是每三分钟执行一次 3、执行脚本会出现发送太慢或发送失败的情况,这是因为邮...

菜鸟一直在成长
2016/09/06
18
0
close wait 导致的java web容器假死

1.现象 线上tomcat或后台task java进程偶发性出现假死,完全没有规律 1.1 java环境 1.2 linux环境 2.分析步骤 2.1 查看进程存活状态 查询到该进程的ID是12635,监听的端口是10061,后面会用到...

熊小飞呀
01/13
0
0
confluence-5.4.4安装、破解、汉化

最近安装了confluence,整理一下,我安装的5.4.4,刚装完,5.5又出了 confluence最新版下载地址:https://www.atlassian.com/software/confluence/try/?tab=download 破解文件:http://down...

lschao12345
2014/05/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

生产者消费者问题(PV操作)

一、明确定义 要理解生产消费者问题,首先应弄清PV操作的含义:PV操作是由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的值减...

shzwork
20分钟前
0
0
重新认识网络通信协议

OSI网络分层 应用层 http, smtp,pop3这些都属于应用层协议 为用户的应用程序提供服务 表示层 确保一个系统的应用层发送的信息被另一个系统的应用层接收到 会话层 通过传输层建立数据传输的通...

最胖的瘦子
31分钟前
0
0
【转】分布式数据流的轻量级异步快照

本篇翻译自论文:Lightweight Asynchronous Snapshots for Distributed Dataflows,Flink的容错快照模型即来源于该论文。原文地址:https://arxiv.org/pdf/1506.08603.pdf 分布式数据流的轻量...

yiduwangkai
34分钟前
0
0
java使用反射机制设置私有成员变量的值

写一个方法:public void setProperty(Objectobj, String propertyName, Object value){}, 此方法可将obj对象中名为propertyName的属性的值设置为value。(这里不知道obj对象的propertyNam...

群星纪元
40分钟前
0
0
用 Tapestry 的方式在页面模板中加入注释

<span jwcid="$remove$">这里是注释</span>

LeoXu
40分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部