当前位置: 首页 > news >正文

公众号服务平台手机优化软件哪个好

公众号服务平台,手机优化软件哪个好,网站后台管理系统html,青岛市黄岛区网站建设python 限制同一时间只执行一个 作服務器端開發的同窗應該都對進程監控不會陌生,最近剛好要更換 uwsgi 爲 gunicorn,而gunicorn又剛好有這麼一章講進程監控,因此多研究了下。python 結合以前在騰訊工做的經驗,也會講講騰訊的服務…

python 限制同一时间只执行一个

作服務器端開發的同窗應該都對進程監控不會陌生,最近剛好要更換 uwsgi 爲 gunicorn,而gunicorn又剛好有這麼一章講進程監控,因此多研究了下。python

結合以前在騰訊工做的經驗,也會講講騰訊的服務器監控是怎麼作的。同時也會講下小團隊又該怎麼敏捷的解決。web

下面按照監控的方法依次介紹。shell

1、按照進程名監控服務器

在騰訊內部全部server都是要打包發佈的,而在打包過程當中是須要填寫要監控的進程名,而後在crontab中定時經過ps查詢進程是否存在。app

這種方法是比較簡單的方法,可是考慮到不少進程會在啓動以後更名,以及進程名存在各類特殊字符,多個進程同時存在的問題,實際操做起來並非很舒服。socket

舉個簡單的例子,gunicorn啓動以後的進程名相似這樣 master: [wsgi:app],其中的方括號在grep時要記得轉義,不然就會出問題。tcp

不過無論怎麼說,這種方法在不少其餘方式用不了的時候反而是最簡單的方法。this

下面是用python的實現:阿里雲

def monitor_process(key_word, cmd):p1 = subprocess.Popen(['ps', '-ef'], stdout=subprocess.PIPE)p2 = subprocess.Popen(['grep', key_word], stdin=p1.stdout, stdout=subprocess.PIPE)p3 = subprocess.Popen(['grep', '-v', 'grep'], stdin=p2.stdout, stdout=subprocess.PIPE)lines = p3.stdout.readlines()if len(lines) > 0:returnsys.stderr.write('process[%s] is lost, run [%s]\n' % (key_word, cmd))subprocess.call(cmd, shell=True)

2、按照端口監控url

這種方式以前在騰訊打包的時候也有用,可是多是進程名更直觀的緣由吧,貌似一直沒怎麼用起來。

不過如今本身在作包部署的時候,反而以爲端口監控是個最靠譜的事情了。這個也沒什麼好多說的,直接上剛寫完的python代碼:

def monitor_port(protocol, port, cmd):address = ('127.0.0.1', port)socket_type = socket.SOCK_STREAM if protocol == 'tcp' else socket.SOCK_DGRAMclient = socket.socket(socket.AF_INET, socket_type)try:client.bind(address)except Exception, e:passelse:sys.stderr.write('port[%s-%s] is lost, run [%s]\n' % (protocol, port, cmd))subprocess.call(cmd, shell=True)finally:client.close()

有的朋友可能說對於tcp端口檢查,其實以client的方式來connect()看是否成功會不會更好?其實我以爲這種方式也挺好的,而且對於不一樣的協議能夠再深刻處理一下,好比對http協議能夠用urllib2.urlopen確保返回正確的包纔算正常。不過若是這麼作的話,就有點偏黑盒監控 了,好比監控寶、阿里雲監控之類的服務了。

3、經過監控server啓動進程,並以監控子進程的方式監控

這個也是在gunicorn頁面上看到的,提及來gunicorn很不厚道的把gaffer放到第一個,讓我還覺得是個很成熟的產品,結果發現連啓動都是個問題。

相反排在後面的supervisor反而至關的好用,下面是截圖:



supervisor能夠很方便的管理進程,包括重啓,中止等等,並且提供了web界面和用戶驗證,能夠很方便的在線管理。

可是有好處就有壞處,用了supervisor以後,就不能本身隨便的去本身重啓服務了,不然會影響supervisor的監控,這對我這種喜歡本身執行 xx.sh restart 的人實在有點太痛苦了。固然,其實要是習慣了去supervisorctl 裏面start/stop/reload 以後也就還好了。

用supervisor配置gunicorn的配置項以下:

[program:yuanzhaopin]environment=PYTHON_EGG_CACHE=/tmp/.python-eggs/,PYTHONPATH=/data/release/yuanzhaopincommand=/usr/local/bin/gunicorn --debug --log-level debug --log-file /tmp/g.log wsgi:appuser=zny2008autorestart=trueredirect_stderr=true

ok,目前本身經常使用的就是這幾種模式了,你們若是有其餘選擇歡迎留言討論。

完整代碼以下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#*/1 * * * * python /xxx/monitor.py >> /xxx/logs/monitor.log 2>&1  &
import sys
import subprocess
import os.path as op
import socket
def this_abs_path(script_name):return op.abspath(op.join(op.dirname(__file__), script_name))def monitor_process(key_word, cmd):p1 = subprocess.Popen(['ps', '-ef'], stdout=subprocess.PIPE)p2 = subprocess.Popen(['grep', key_word], stdin=p1.stdout, stdout=subprocess.PIPE)p3 = subprocess.Popen(['grep', '-v', 'grep'], stdin=p2.stdout, stdout=subprocess.PIPE)lines = p3.stdout.readlines()if len(lines) > 0:returnsys.stderr.write('process[%s] is lost, run [%s]\n' % (key_word, cmd))subprocess.call(cmd, shell=True)def monitor_port(protocol, port, cmd):address = ('127.0.0.1', port)socket_type = socket.SOCK_STREAM if protocol == 'tcp' else socket.SOCK_DGRAMclient = socket.socket(socket.AF_INET, socket_type)try:client.bind(address)except Exception, e:passelse:sys.stderr.write('port[%s-%s] is lost, run [%s]\n' % (protocol, port, cmd))subprocess.call(cmd, shell=True)finally:client.close()#=============================================================================
def yuanzhaopin():cmd = '%s start' % this_abs_path('gun.sh')#monitor_process('\[yuanzhaopin\]', cmd)monitor_port('tcp', 8635, cmd)def main():yuanzhaopin()if __name__ == '__main__':main()

 

http://www.yayakq.cn/news/920235/

相关文章:

  • 网站首页图片效果优化流程
  • 企业网站开发模板正规的网页制作
  • 速成美站怎么网络推广自己业务
  • 网站html优化方法wordpress适合外贸的主题
  • 网站建设哪里便宜个人外贸网站
  • 建设一个企业网站到底要多少钱wordpress主题注册验证码
  • 关于建设 医院网站的请示app推广是什么工作
  • 北京科技网站建设公司云主机怎么安装网站
  • 雅安城乡住房建设厅网站青岛网站建设制作
  • 影院网站怎么做做商城网站产品怎么分布
  • 网站购物车建设如何做返利网站外推广
  • 网上做论文的网站有哪些内容非自己的网站如何做二次跳转
  • 网站建设夜猫本地做网站
  • 苏州网站设计公司官网中国纪检监察报评论员文章
  • 2017做啥网站能致富手工制作大全 简单易学
  • 上海 网站开发 外包cumfoot wordpress
  • 主播网站建设四线城市做网站建设怎么样
  • 棋牌类网站开发网站下方链接图标怎么做
  • 专门做签到的网站深圳做网站d公司
  • 如何用oss做视频网站wordpress模板导航
  • 上海网站设计团队郑州网站建设有限公司
  • 汽车网站更新怎么做微商营销软件商城
  • 做那个网站的图客比较好视频网站自己怎么做的
  • 微信怎么建设网站新能源电动汽车电池价格
  • 做网站普洱定制家具网
  • 濮阳佳杰网站建设巧用不对称科技有限公司经营范围
  • 做英文网站需要多少响应式网站缺点
  • 餐饮品牌设计全案西安官网seo价格
  • 个人网站做导航网站注册网站域名有什么用
  • 论坛软文案例南京网站seo优化公司