zoukankan      html  css  js  c++  java
  • supervisor笔记

    supervisord 作为主进程,管理旗下的各个子进程,子进程会产生若干线程。当某个管理的服务异常奔溃之后,supervisor 会自动重启该服务。配合使用 superlance 插件以实现 Http状态、内存等进行监控报警。

    mysql

    [program:mysql]
    command=/path/to/pidproxy /path/to/pidfile /path/to/mysqld_safe
    

    运行Tomcat

    [program:tomcat]
    command=/path/to/tomcat/bin/catalina.sh run
    process_name=%(program_name)s
    startsecs=5
    stopsignal=INT
    user=tomcat
    redirect_stderr=true
    stdout_logfile=/var/log/tomcat.log  #catalina.out
    

    运行py服务

    • 安装:
      pip install supervisor

    • 生成配置文件:
      echo_supervisord_conf > /etc/supervisord.conf

    • 修改配置:

      如需允许 web 界面和命令行访问

    [inet_http_server] 
    port=*:9001     ;这里*表示可以让其他终端访问supervisor web界面
    username=username ;  用户名 
    password=password  ;  密码 
    

      配置一个服务

    [program:test_http]
    command=python test_http.py 501  ; 被监控的进程路径
    directory=/home/admin/soft/supervisor-3.1.3                ; 执行前要不要先cd到目录去,一般不用
    priority=1                    ;数字越高,优先级越高
    numprocs=1                    ; 启动几个进程
    autostart=true                ; 随着supervisord的启动而启动
    autorestart=true              ; 自动重启。。当然要选上了
    startretries=10               ; 启动失败时的最多重试次数
    exitcodes=0                   ; 正常退出代码(是说退出代码是这个时就不再重启了吗?待确定)
    stopsignal=KILL               ; 用来杀死进程的信号
    stopwaitsecs=10               ; 发送SIGKILL前的等待时间
    redirect_stderr=true          ; 重定向stderr到stdout
    

    这里 test_http.py 位于 directory(/home/admin/soft/supervisor-3.1.3)目录下

    test_http.py:

    #python 2x
    
    import sys  
    import BaseHTTPServer  
    from SimpleHTTPServer import SimpleHTTPRequestHandler  
    HandlerClass = SimpleHTTPRequestHandler  
    ServerClass = BaseHTTPServer.HTTPServer  
    Protocol = "HTTP/1.0"  
      
    if __name__ == "__main__":
        if sys.argv[1:]:  
            port = int(sys.argv[1])  
        else:  
            port = 8000  
    
        server_address = ('10.125.24.105', port)  
        HandlerClass.protocol_version = Protocol  
        httpd = ServerClass(server_address, HandlerClass)  
        
        sa = httpd.socket.getsockname()  
        print "Serving HTTP on", sa[0], "port", sa[1], "..."  
        httpd.serve_forever()
    
    • 启动

    supervisord -c /etc/supervisord.conf

    • 管理命令
    sudo supervisorctl
    status: 查看当前运行的进程列表
    stop xxx: 停止某一个进程(xxx),xxx为[program:theprogramname]里配置的值。
    start xxx: 启动某个进程
    restart xxx: 重启某个进程
    stop groupworker: 重启所有属于名为groupworker这个分组的进程(start,restart同理)
    stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
    reload    载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
    update    根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
    

    显示用 stop 停止掉的进程,用 reload 或者 update 都不会自动重启。

    • 重新加载配置

    supervisorctl -c /etc/supervisord.conf

  • 相关阅读:
    eclipse下配置Spring环境
    筑梦路上的孤独行者
    Js继承各模式总结
    水题-poj1979
    C++静态数据成员存在的意义
    Mac_Sublime_JavaScript
    LeetCode204——count primes
    (吐槽)讨厌的VIP机制
    LeetCode55——Jump Game
    LeetCode62——Unique Paths
  • 原文地址:https://www.cnblogs.com/bvac/p/5507712.html
Copyright © 2011-2022 走看看