前言

昨天临近下班,发现业务队列处理不及时,正好想到不久之前,上了一个新功能:通过队列异步转发微信消息。可能是消息太多了处理不过来,没怎么多想,处理不过来了,多增加处理进程就可以了,后来发现自己so young了 >_<!启动处理进程,必须先安装进程管理工具,比较出名的有supervisord,使用python语言实现。折腾了近半小时,后来发现自己不可能在短时间内搞定这个事情,业务上用户消息没有得到及时回复,需要快速处理,最后还是寻求公司大神帮助安装其它前端机的supervisord。为了学会安装以及使用这个神器,为了以后碰到这样的问题可以自己搞定,在测试机上尝试安装了这个神器,于是有了这篇总结的文章。

查看依赖python模块是否安装(只安装没有的依赖包)

  1. [root@mtest3 ~]# python -u -c "help('modules')" > a.log
  2. [root@mtest3 ~]# cat a.log | grep element
  3. [root@mtest3 ~]# cat a.log | grep meld
  4. [root@mtest3 ~]# cat a.log | grep setuptool

先安装依赖包
1.elementtree-1.2.6-20050316.tar.gz

  1. [root@mtest3 Supervisord]# tar -xvf elementtree-1.2.-.tar.gz
  2. [root@mtest3 Supervisord]# cd elementtree-1.2.-
  3. [root@mtest3 elementtree-1.2.-]# python setup.py install

2.meld3-0.6.5.tar.gz

  1. [root@mtest3 Supervisord]# tar -xvf meld3-0.6..tar.gz
  2. [root@mtest3 Supervisord]# cd meld3-0.6.
  3. [root@mtest3 meld3-0.6.]# python setup.py install

3.setuptools-20.2.2.tar.gz

  1. [root@mtest3 Supervisord]# tar -xvf setuptools-20.2..tar.gz
  2. [root@mtest3 Supervisord]# cd setuptools-20.2.
  3. [root@mtest3 setuptools-20.2.]# python setup.py install

3.安装supervisord

  1. [root@mtest3 Supervisord]# tar -xvf supervisor-3.2..tar.gz
  2. [root@mtest3 Supervisord]# cd supervisor-3.2.
  3. [root@mtest3 supervisor-3.2.]# python setup.py install
  4.  
  5. Installing echo_supervisord_conf script to /usr/bin
  6. Installing pidproxy script to /usr/bin
  7. Installing supervisorctl script to /usr/bin
  8. Installing supervisord script to /usr/bin

生成配置文件

  [root@mtest3 ~]# echo_supervisord_conf > /u01/server/supervisord/conf/supervisord.conf 

设置

  1. ; Sample supervisor config file.
  2. ;
  3. ; For more information on the config file, please see:
  4. ; http://supervisord.org/configuration.html
  5. ;
  6.  
  7. [unix_http_server]
  8. file=/u01/server/supervisord/temp/supervisor.sock ; (the path to the socket file)
  9.  
  10. [supervisord]
  11. logfile=/u01/server/supervisord/logs/supervisord.log ; (main log file;default $CWD/supervisord.log)
  12. logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
  13. logfile_backups= ; (num of main logfile rotation backups;default )
  14. loglevel=info ; (log level;default info; others: debug,warn,trace)
  15. pidfile=/u01/server/supervisord/temp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
  16. nodaemon=false ; (start in foreground if true;default false)
  17. minfds= ; (min. avail startup file descriptors;default )
  18. minprocs= ; (min. avail process descriptors;default )
  19.  
  20. ; the below section must remain in the config file for RPC
  21. ; (supervisorctl/web interface) to work, additional interfaces may be
  22. ; added by defining them in separate rpcinterface: sections
  23. [rpcinterface:supervisor]
  24. supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
  25.  
  26. [supervisorctl]
  27. serverurl=unix:///u01/server/supervisord/temp/supervisor.sock ; use a unix:// URL for a unix socket
  28.  
  29. ; The below sample program section shows all possible program subsection values,
  30. ; create one or more 'real' program: sections to be able to control them under
  31. ; supervisor.
  32.  
  33. [program:wx_front]
  34. command=/u01/server/php/bin/php /u01/server/apps/wechat/artisan queue:listen --queue=wxqueue --timeout= --delay= --memory= --sleep= --tries= --env=test ; the program (relative uses PATH, can take args)
  35. process_name=%(program_name)s ; process_name expr (default %(program_name)s)
  36. numprocs= ; number of processes copies to start (def )
  37. ;directory=/tmp ; directory to cwd to before exec (def no cwd)
  38. ;umask= ; umask for process (default None)
  39. ;priority= ; the relative start priority (default )
  40. autostart=true ; start at supervisord start (default: true)
  41. startsecs= ; # of secs prog must stay up to be running (def. )
  42. startretries= ; max # of serial start failures when starting (default )
  43. ;autorestart=unexpected ; when to restart if exited after running (def: unexpected)
  44. ;exitcodes=, ; 'expected' exit codes used with autorestart (default ,)
  45. ;stopsignal=QUIT ; signal used to kill process (default TERM)
  46. ;stopwaitsecs= ; max num secs to wait b4 SIGKILL (default )
  47. ;stopasgroup=false ; send stop signal to the UNIX process group (default false)
  48. ;killasgroup=false ; SIGKILL the UNIX process group (def false)
  49. user=daemon ; setuid to this UNIX account to run the program
  50. ;redirect_stderr=true ; redirect proc stderr to stdout (default false)
  51. stdout_logfile=/u01/server/supervisord/logs/wx_front_stdout.log ; stdout log path, NONE for none; default AUTO
  52. stdout_logfile_maxbytes=50MB ; max # logfile bytes b4 rotation (default 50MB)
  53. stdout_logfile_backups= ; # of stdout logfile backups (default )
  54. ;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default )
  55. ;stdout_events_enabled=false ; emit events on stdout writes (default false)
  56. stderr_logfile=/u01/server/supervisord/logs/wx_front_stderr.log ; stderr log path, NONE for none; default AUTO
  57. stderr_logfile_maxbytes=50MB ; max # logfile bytes b4 rotation (default 50MB)
  58. ;stderr_logfile_backups= ; # of stderr logfile backups (default )
  59. ;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default )
  60. ;stderr_events_enabled=false ; emit events on stderr writes (default false)
  61. ;environment=A="",B="" ; process environment additions (def no adds)
  62. ;serverurl=AUTO ; override serverurl computation (childutils)
  63.  
  64. [program:wx_admin]
  65. command=/u01/server/php/bin/php /u01/server/apps/admin/artisan queue:listen --queue=wx_queue_admin --timeout= --delay= --memory= --sleep= --tries= --env=test ; the program (relative uses PATH, can take args)
  66. process_name=%(program_name)s ; process_name expr (default %(program_name)s)
  67. numprocs= ; number of processes copies to start (def )
  68. autostart=true ; start at supervisord start (default: true)
  69. startsecs= ; # of secs prog must stay up to be running (def. )
  70. startretries= ; max # of serial start failures when starting (default )
  71. user=daemon ; setuid to this UNIX account to run the program
  72. stdout_logfile=/u01/server/supervisord/logs/wx_admin_stdout.log ; stdout log path, NONE for none; default AUTO
  73. stdout_logfile_maxbytes=50MB ; max # logfile bytes b4 rotation (default 50MB)
  74. stdout_logfile_backups= ; # of stdout logfile backups (default )
  75. stderr_logfile=/u01/server/supervisord/logs/wx_admin_stderr.log ; stderr log path, NONE for none; default AUTO
  76. stderr_logfile_maxbytes=50MB ; max # logfile bytes b4 rotation (default 50MB)

开机自启动
/etc/rc.local
supervisord -c /u01/server/supervisord/conf/supervisord.conf

手动启动
supervisord -c /u01/server/supervisord/conf/supervisord.conf

进程管理
1.进入cli终端

  1. [root@mtest3 logs]# supervisorctl -c /u01/server/supervisord/conf/supervisord.conf
  2. supervisor>

2.查看进程状态

  1. supervisor> status
  2. wx_admin: RUNNING pid , uptime ::
  3. wx_admin: RUNNING pid , uptime ::
  4. wx_front: RUNNING pid , uptime ::
  5. wx_front: RUNNING pid , uptime ::

3.重启superivsord服务(更改配置之后)

  1. supervisor> reload
  2. Really restart the remote supervisord process y/N? y
  3. Restarted supervisord

4.关闭进程

  1. supervisor> stop all
  2. wx_admin:: stopped
  3. wx_admin:: stopped
  4. wx_front:: stopped
  5. wx_front:: stopped

5.启动进程

  1. supervisor> start all
  2. wx_admin:: started
  3. wx_admin:: started
  4. wx_front:: started
  5. wx_front:: started

6.查看命令行帮助(支持的命令,以及用法)

  1. supervisor> help
  2.  
  3. default commands (type help <topic>):
  4. =====================================
  5. add exit open reload restart start tail
  6. avail fg pid remove shutdown status update
  7. clear maintail quit reread signal stop version

7.退出

  1. supervisor> exit
  2.  
  3. default commands (type help <topic>):
  4. =====================================
  5. add exit open reload restart start tail
  6. avail fg pid remove shutdown status update
  7. clear maintail quit reread signal stop version

备注
1.配置key value必须至少包含一个空格再跟上 ; 注释符号

后记

看起来安装这个很简单,实际操作过之后,还是碰到一些意外的坑,而这些坑只有实际操作过才能发现:)

参考资料
[1] supervisord官网
http://supervisord.org/index.html

[2] supervisor github

https://github.com/Supervisor/supervisor/releases

[3] elementtree-1.2.6-20050316
http://effbot.org/downloads#elementtree

[4] meld3-0.6.5
http://www.plope.com/software/meld3/

[5] setuptools-20.2.2
https://pypi.python.org/pypi/setuptools#downloads

supervisord进程管理工具小结的更多相关文章

  1. Supervisord进程管理工具

    进程管理工具Supervisord Posted on 2014/06/17 by admin Supervisord 上面已经介绍了Go目前是有两种方案来实现他的daemon,但是官方本身还不支持这 ...

  2. Linux 进程管理工具 supervisord 安装及使用

    Supervisor是用Python实现的一款非常实用的进程管理工具 1.安装过程非常简单 安装python 安装meld3-0.6.8.tar.gz 安装supervisor-3.0a12.tar. ...

  3. Linux进程管理工具 Supervisord 的安装 及 入门教程

    Supervisor是一个进程管理工具,官方的说法: 用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断.当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了 ...

  4. 2017.7.21 linux下进程管理工具supervisord的安装与使用

    参考来自:http://blog.haohtml.com/archives/15145 0 操作环境 1 supervisord的介绍 Supervisord是用Python实现的一款非常实用的进程管 ...

  5. 进程管理工具-Supervisord 使用

    简介 Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动.重启(自动重启程序).关闭进程(不仅仅是 Pytho ...

  6. Linux进程管理工具——supervisor

    介绍 Supervisord是用Python实现的一款非常实用的进程管理工具 安装 这里用源码 supervisor-.tar.gz .tar.gz cd supervisor- sudo pytho ...

  7. supervisor python开发的进程管理工具

    Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(不仅仅是 Python 进程).除了对单个进程的 ...

  8. supervisor进程管理工具的使用

    supervisor是一款进程管理工具,当想让应用随着开机启动,或者在应用崩溃之后自启动的时候,supervisor就派上了用场. 广泛应用于服务器中,用于引导控制程序的启动 安装好superviso ...

  9. Python 进程管理工具 Supervisor 使用教程

    Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上.Supervisor 官方版目前只能运行在 Python 2 ...

随机推荐

  1. 题目收藏夹(啥时候一遍A啥时候删)

    以下题目为没有思路或代码离谱错误或看了题解才会的,间隔一周以上再做一遍A掉就删. bzoj1500 bzoj2287 codevs1358 bzoj1725

  2. Mobile

    模块===包   传统开发:整个网页我们写了一个js文件,所有的特效都写在里面了. 缺点:耦合度太高,代码关联性太强,不便于后期维护,会造成全局污染. 发生的请求次数过多,依赖模糊,难于维护. 以上都 ...

  3. mac 安装 swoole 可能会出现的错误

    请先看完之后再操作 一.用pecl安装swoole(没有安装起来) 2018年4月,由于homebrew的变动,导致无法使用brew install的方式安装php的扩展,现在改为用pecl安装,pe ...

  4. mina2 笔记

    http://www.iteye.com/topic/1112123 http://dongxuan.iteye.com/blog/901689 http://scholers.iteye.com/b ...

  5. RabbitMQ~说说Exchange的几种模式

    RabbitMQ里的Exchange提供了四种模式,或者叫它类型,它们是fanout,direct,topic和header,其中前三种模式我们用的比较多,所有我们主要介绍前3种! Direct 任何 ...

  6. CDH5.7Hadoop集群搭建(离线版)

    用了一周多的时间终于把CDH版Hadoop部署在了测试环境(部分组件未安装成功),本文将就这个部署过程做个总结. 一.Hadoop版本选择. Hadoop大致可分为Apache Hadoop和第三方发 ...

  7. 【转】Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例

    概要 这一章,我们对TreeMap进行学习.我们先对TreeMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用TreeMap.内容包括:第1部分 TreeMap介绍第2部分 TreeMa ...

  8. Java中 == 和 equals()

    记住三句话 1. 语义上:==指的是内存引用一样.equals是指的是逻辑相等.逻辑相等具体的意思由编写者决定(即在引用类型中,"=="是比较两个引用是否指向堆内存里的同一个地址( ...

  9. jQuery封装的选项卡方法

    ********************************************************2018/3/15更新********************************* ...

  10. JS——轮播图简单版

    1.小图标版本 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...