zoukankan      html  css  js  c++  java
  • Supervisor 自动管理进程

    supervisor 能在 python 环境下自动管理进程,当所管理的进程挂掉,supervisor 可以自动拉起被管理的进程。

    1、安装 supervisor

    pip install supervisor

    2、测试安装是否成功

    echo_supervisord_conf

    3、创建、编辑配置文件

    主要要经历下面几个步骤:

    (1) 在/etc 下创建目录 supervisor

    (2) 在 /etc/supervisor 下创建主配置文件 supervisord.conf 和 项目应用配置文件目录 conf.d

    (3) 在 conf.d 下创建项目应用配置文件 my_app.ini 并编辑配置之

    (4) 在主配置文件 supervisord.conf 里引用项目应用配置文件 my_app.ini

    3.1 在/etc 下创建目录 supervisor

    cd /etc
    sudo mkdir supervisor
    
    最终:/etc/supervisor

    3.2 在 /etc/supervisor 下创建主配置文件 supervisord.conf 和 项目应用配置文件目录 conf.d

    自动生成配置文件 supervisord.conf
    echo_supervisord_conf > supervisord.conf
    cp supervisord.conf /etc/supervisor/supervisord.conf

    cd /etc/supervisor
    sudo mkdir conf.d

    最终:
    /etc/supervisor/supervisord.conf
    /etc/supervisor/conf.d

    3.3 在 conf.d 下创建项目应用配置文件 my_app.ini 并编辑配置之

    my_app.ini 配置示例:

    [program: my_app]
    command=my_app -a 123 ; 启动 my_app 进程的命令行,便于 supervisord 拉起 my_app
    autostart=true
    startsec=3
    autorestart=true
    stopsignal=QUIT
    priority=1
    stopasgroup=true
    killasgroup=true stdout_logfile
    =.../my_project/log/supervisor.log stderr_logfile=.../my_project/log/supervisor_err.log

    3.4 在主配置文件 supervisord.conf 里引用项目应用配置文件 my_app.ini

    修改主配置文件 supervisord.conf
    
    找到 include
    ;[include]
    ;files = relative/directory/*.ini
    
    改为:
    [include]
    files = ./conf.d/*.ini

    上面的 *.ini 已经包含了 my_app.ini 所以更通用。

    4、启动 supervisor

    supervisord -c supervisord.conf

    使用 pstree -p 可以看到进程树形如: supervisord --- 被管理的进程

    5、使用 supervisorctl 查看已经被管理的的程序

    supervisorctl -c /etc/supervisor/supervisord.conf

    6、重启 supervisor

    supervisorctl reload

    注意:

    1、supvisor 较适合管理监控业务应用,且只能监控前台程序,不能监视后台程序;

    如监控 daemon 类程序,会拉不起被监控的程序,会出现错误:

    BACKOFF  Exited too quickly (process log may have details)

    2、每次修改配置文件后,用

    supervisorctl reload

    重启 supervisor 才能生效

    3、涉及 2个命令:

    supervisord - 用于启动 supervisor 

    supervisorctl  - 用于启动 supervisor 命令行,可执行 start、stop、status、reload 等操作

    4、web 管理界面

    支持通过 web 界面管理

    修改 supervisord.conf 配置,即可启动 web 管理界面

    修改成类似下面:
    
    [inet_http_server]
    port=127.0.0.1:9001
    username=user
    password=123

    若 9001 端口拒绝访问,可开启访问

    [root@localhost ~]# iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 9001 -j ACCEPT 
    [root@localhost ~]# service iptables save  

    接下来,就可以通过 浏览器web访问管理界面了

  • 相关阅读:
    XmlSerializer .NET 序列化、反序列化
    XmlSerializer .NET 序列化、反序列化
    XmlSerializer .NET 序列化、反序列化
    细数那些你可能不知道的国产数据库
    Python爬虫入门教程 13-100 斗图啦表情包多线程爬取
    基于超大规模集群的本地存储系统优化
    BI分析工具深度测评:FineBI vs Tableau
    Python爬虫入门教程 12-100 半次元COS图爬取
    celery 配置
    Java基础之int和Integer有什么区别
  • 原文地址:https://www.cnblogs.com/vsignsoft/p/9300604.html
Copyright © 2011-2022 走看看