python程序监管插件supervisor
supervisor介绍:
- supervisord
运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。
- supervisorctl
是命令行管理工具,可以用来执行 stop、start、restart 等命令,来对这些子进程进行管理。
supervisor是所有进程的父进程,管理着启动的子进展,supervisor以子进程的PID来管理子进程,当子进程异常退出时supervisor可以收到相应的信号量。
supervisor安装
指令安装:
pip install supervisor
源码安装:
supervisor使用
WEB查看进程
打开supervisor的配置文件,去掉[inrt_http_server]注释
程序端口配置:
suopervisor是一个开源程序,如果别人也使用就会有端口冲突,修改之即可
配置文件使用
默认配置文件生成(先找好存放目录):
echo_supervisord_conf > supervisord.conf
supervisor常用配置项:
[program:test_one]
command=java -jar /data/smallvideo/supervisor/taskApp-exec.jar TaskTestOne ; 被监控的进程路径
priority=1 ; 数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
user = root ;程序运行的用户
以上是一个使用模板,下面会说一些特殊的配置和说明。
[program:test_one]是固定格式,使用supervisorctl status all时,查看到的程序名字是test_one。注意保持名字的全局唯一性
command 的值是程序启动的格式,注意程序启动后不能以daemon形式启动,supervisor管理的都是非daemon格式
如nginx :
command = $NGINX_PATH/sbin/nginx -p $NGINX_PATH -c $NGINX_PATH/conf/nginx.conf -g 'daemon off';
对于一个程序,共用一个配置段,启动多份时,需要做如下配置:
command = /usr/bin/python /$SOFT_PATH/main.py --port=%(process_num)d #指定每一个的启动端口
process_name=%(program_name)s%(process_num)s #指定使用supervisorctl status显示程序时,程序的名字格式
numprocs=3 #指定启动的程序个数
numprocs_start=7002 #指定端口从7002开始,一次是7003,7004
当一个程序自己启动多份时(与上面不同,上面是supervisor启动了多份),需要使用以下项,对进程组进行控制
stopasgroup = true
killasgroup = true ;貌似上面哪种启动也可以用这个方法,一次关闭玩

浙公网安备 33010602011771号