• 一个站点的诞生09--自己主动监控


    部署Web App。须要买一个域名,我推荐http://www.namecheap.com/,用信用卡或者paypal付款,一年10刀。
    假设须要VPS,买Linode.com的,它家新推出每月10刀的主机,性能绝佳,假设选择东京的机房,从大陆訪问非常快,用海外的主机不须要备案,这是最大的卖点。

    站点的tornado代码执行了,站点能够訪问了。有时候站点会由于各种原因崩溃,比方被攻击。代码bug,流量太大等等。

    这时候就须要一个自己主动监控脚本。这个脚本监控站点的tornado进程,每隔几秒检測一次进程。假设发现进程不在了,就又一次启动进程。

    有了它,你就不用半夜被叫醒重新启动站点了。



    zuijiacanting.com的自己主动监控脚本类似这样,moniter_zjct.py
    --------------------------------
    #!/usr/bin/env python
    #!-*- coding:utf-8 -*-

    import os
    import time
    import sys

    class MonitorZjct:
        def run(self):
            while True:
                time.sleep(5)
                try:
                    ret = os.popen('ps axu|grep myweb_server.py|grep -v grep|grep python').readlines()
                    if len(ret) == 0:
                        os.system("cd /home/xxxx/yyy/bbb/; sudo ./ggg/myweb_server.py")
                except:
                    print "Error", sys.exc_info()[1]


    if __name__ == "__main__":
        mz = MonitorZjct()
        mz.run()
    --------------------------------
    这个py代码,每隔5秒检測一下myweb_server.py进程是否存在,假设不存在,就又一次启动这个进程。

    这个进程须要开机自己主动启动。依照例如以下方式操作:

    1. 创建/etc/init.d/monitor_zjct文件,内容例如以下:
    --------------------------------
    #!/bin/bash

    #cp this file to /etc/init.d/
    EXE="/home/xxx/monitor_zjct.py"
    PIDFILE=/var/run/monior_zjct.pid

    d_start(){
      start-stop-daemon --start --quiet --background --m --pidfile $PIDFILE --exec $EXE
    }

    d_stop(){
      start-stop-daemon --stop --quiet --pidfile $PIDFILE
      rm -rf $PIDFILE
    }

    case $1 in
        start)
            d_start
            ;;
        stop)
            d_stop
            ;;
        restart)
            d_stop
            sleep 1
            d_start
            ;;
        *)
            echo "usage: $NAME {start|stop|restart}"
            exit 1
            ;;
    esac

    exit 0
    --------------------------------

    这个脚本以daemon的方式启动monitor_zjct.py。

    2. 在/etc/rc.local里。增加一行语句"/etc/init.d/monitor_zjct start"。

    3. 每次开机会自己主动启动monitor_zjct.py,它启动后,会检查进程。发现tornado程序没有执行,于是启动tornado程序,站点就開始执行了。



    要想关闭tornado程序,须要先关掉monitor_zjct.py,否则它发现tornado进程不再,就会启动新的tornado进程。

    假设要更新代码,每次更新代码之后。要kill掉tornado进程。5秒后。monitor_zjct.py会再次启动tornado进程,这时候执行的就是新代码了。

    开机启动的自己主动监控大多与此类似,大同小异。

  • 相关阅读:
    极光推送 标签和别名设置说明
    极光推送集成遇到的坑
    iOS开发:创建推送开发证书和生产证书,以及往极光推送官网上传证书的步骤方法
    【大数据算法】蓄水池抽样算法
    【leetcode】Find Minimum in Rotated Sorted Array I&&II
    朴素贝叶斯算法的实例
    【leetcode】Min Stack -- python版
    朴素贝叶斯算法的python实现
    决策树的python实现
    kNN算法python实现和简单数字识别
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6943275.html
Copyright © 2020-2023  润新知