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                                  ;貌似上面哪种启动也可以用这个方法,一次关闭玩
        
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2020-12-19 21:56  dos_hello_world  阅读(178)  评论(0)    收藏  举报