一个站点的诞生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进程,这时候执行的就是新代码了。

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

时间: 2024-10-29 19:12:08

一个站点的诞生09--自己主动监控的相关文章

一个站点的诞生03--抓取评论数最多的一万家餐厅

在大众点评网上,有非常多种方式对餐厅进行排序,比方http://www.dianping.com/search/category/1/10/o10,是上海全市依照评论总数最多对餐厅进行排序,以下有50个分页,也就是上海历年累计评论综述最多的750家餐厅.但仅仅有750家,少了点.上海有18个区,逐区点击的话,每区都会显示前750家餐厅,比方这个http://www.dianping.com/search/category/1/10/r802o10,是浦东新区八佰伴地段的前750家.上海如今有十万

一个站点的诞生02--用Scrapy抓取数据

假设想抓数据,就须要有爬虫程序,业内叫crawler或者spider. 有各种语言版本号的开源爬虫.c++, Java,  php,在github上搜一下,以"spider c++"为keyword,有245个开源爬虫,以"spider java"为keyword.有48个. 那python呢?156个. 爬虫技术在业界已经非常成熟了.有非常多开源框架,在它们的帮助下写爬虫能够非常快,几个小时就能写一个不错的东东用. 爬虫技术也会非常复杂.假设要做分布式抓取和全文检

一个网站的诞生09--自动监控

部署Web App,需要买一个域名,我推荐http://www.namecheap.com/,用信用卡或者paypal付款,一年10刀. 如果需要VPS,买Linode.com的,它家新推出每月10刀的主机,性能绝佳,如果选择东京的机房,从大陆访问很快,用海外的主机不需要备案,这是最大的卖点. 网站的tornado代码运行了,网站可以访问了.有时候网站会因为各种原因崩溃,比如被攻击,代码bug,流量太大等等. 这时候就需要一个自动监控脚本.这个脚本监控网站的tornado进程,每隔几秒检测一次进

项目实战_Python.利用Python+Flask编写一个高性能实时主动监控平台?

项目简介: 说明: 主要用于Redis实例集中化实时主动监控,后端采用Python+Flask实现,具体实现代码请阅读代码 项目思路: 项目结构: xmzoomeye-redis ├── app │   ├── conf │   │   ├── config.py │   │   ├── config.pyc │   │   ├── __init__.py │   │   ├── __init__.pyc │   │   └── rdsdata.db │   ├── __init__.py │ 

一个网站的诞生01--缘由

大概在半年前,我觉得需要做一个网站,寻找新奇有趣的餐厅. 喜欢美食的人,在中意餐厅吃久了,总想找新餐厅换换口味,试试新菜和新的食材. 寻找新餐厅并不容易,甚至是艰难.由于众所周知的原因,网上流传的餐厅文,美食文,常常不可信,编排越精美,越可能是软广---大家天天都很忙,很少有闲心做这么精美的文宣.我跟这些美食文找过,失望大于希望,成功率不到一半.而且,魔都太大,打听到的餐厅,总要去试吃一下,来来回回总跑上几个小时吧?时间很宝贵,这么做太不划算了! 上海的餐厅大众点评网收集的最齐全,如果我把它上面

一个网站的诞生07-- Tornado Web Server

用Spider抓取数据,然后再做各种处理,然后放到web页面供大家使用. 那么,就需要一个Web Server. 几乎每种语言都有一大堆Web Server开发框架,Python也不例外,比如这里http://www.zhihu.com/question/20706333.廖雪峰同学还有个python的教程http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0014023080708

一个网站的诞生10--自动化部署

所谓自动部署就是说,如果用10台机器跑tornado程序提供Web服务,它们上面的代码都是一样的,这也叫生产环境.在公司写新代码,写好了,测试通过,这叫开发环境.然后执行自动部署程序,它把新代码提交到版本管理服务器,然后连上生产环境的10台服务器,让它们更新代码,再重启tornado程序,新代码就上线了,用户看到的就是新发布的网站. 自动部署的关键是两个东西,一个是版本服务器,一个是远程操作. 推荐用git版本服务器,推荐寥雪峰的git教程,写得非常清晰,是目前为止我见到的最容易入手的,链接在这

一个网站的诞生05--如何把网站做到估值过亿

网站的意义,在于创造对用户有价值的东西,估值是网站意义的一个衡量指标,提升估值的手段,也就等价于把网站做得更有用. 如何计算一个网站的估值?国际标准是每个活跃用户的价值是40刀左右,Whatsapp卖了190亿刀,它有4.5亿活跃用户.中国略有差别,微信的估值是40亿~50亿刀,有3亿用户,但中国的用户商业价值不够高,人均GDP太低,所以每个活跃用户的价值是10-15刀,也就是RMB60-90元.如果网站(包括同名App)要想估值过亿,要有一百万的活跃用户.另一种估算方式是,行业第二名的估值是第

APACHE如何里一个站点绑定多个域名?用ServerAlias 转

APACHE2如何里一个站点绑定多个域名?用ServerAlias以前很笨,要使多个域名指向同一站点总是这样写: <VirtualHost *:80>ServerAdmin [email protected]DocumentRoot /www/kuigg.comServerName kuigg.com</VirtualHost> <VirtualHost *:80>ServerAdmin [email protected]DocumentRoot /www/kuigg.