zoukankan      html  css  js  c++  java
  • supervisor简洁用例

    • supervisor是什么

      superviosr是一个Linux/Unix系统上进程监控和管理的工具,它由python编写,可以用pip安装。supervisor能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启

    • 为什么要使用supervisor

      supervisor可以实现单个或成组地控制进程,它可以把web服务的进程组当作自己的子进程,在子进程挂掉时重启。对一组进程进行统一管理是linux没有的功能

    • supervisor组件

      supervisord是管理其他进程的主进程

      supervisorctl是supervisor客户端的命令行工具

    • 主配置文件supervisord.conf

    1. unix_http_server 配置块

      在该配置块的参数项表示的是一个监听在socket上的HTTP server

      [unix_http_server]
      file=/tmp/supervisor.sock   ; (the path to the socket file)
      chmod=0766                 ; socket file mode (default 0700)
      
      • file: unix domain socket的文件路径。supervisorctl通过它与supervisord进行通信

      • chmod: 修改supervisor.sock文件的权限

    2. supervisord 配置块

      该配置块的参数项是关于supervisord进程的全局配置项

      [supervisord]
      logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
      logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
      logfile_backups=10           ; (num of main logfile rotation backups;default 10)
      loglevel=info                ; (log level;default info; others: debug,warn,trace)
      pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
      nodaemon=false               ; (start in foreground if true;default false)
      minfds=1024                  ; (min. avail startup file descriptors;default 1024)
      minprocs=200                 ; (min. avail process descriptors;default 200)
      
      • logfile: log文件路径。与子进程的日志不同

      • logfile_maxbytes: log文件达到多少自动进行轮转,单位是kb、单位是KB、MB、GB。如果设置为0则表示不限制日志文件大小。当日志大小超过50MB时,生成一个新的日志文件

      • logfile_backups:轮转日志备份的数量,默认是10,如果设置为0,则不备份

      • loglevel:error、warn、info、debug、trace、blather、critical

      • pidfile:pid文件路径

      • nodaemon:如果设置为true,则supervisord在前台启动,而不是以守护进程启动

      • minfds:supervisord在成功启动前最少系统空闲的文件描述符,默认1024

      • minprocs:supervisord在成功启动前最小可用的进程描述符,默认200

    3. supervisorctl配置块

      [supervisorctl]
      serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket
      
      • serverurl: 这个是supervisorctl本地连接supervisord的时候,本地UNIX socket路径,注意这个是和前面的[unix_http_server]对应的
        默认值就是unix:///tmp/supervisor.sock
    4. rpcinterface配置块

      这个选项是给XML_RPC用的,如果想使用supervisord或者web server这个选项必须要开启

      [rpcinterface:supervisor]
      supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
      
    5. include配置块

      用于将写在cong.d中的*.ini文件内容读入主配置文件

      一般一个ini文件包含一个program配置块。用于配置web服务进程的启动命令、目录、日志位置等

      [include]
      files = /etc/supervisor/conf.d/*.ini
      
    • program配置块

      [program:myserver]
      command=/home/my_web_server/venv/bin/gunicorn -w4 -b0.0.0.0:8105 app.wsgi:application
      directory=/home/my_web_server/
      user=deploy
      stdout_logfile=/home/logs/server.log
      stderr_logfile=/home/logs/server.err.log
      
      • command:启动程序使用的命令,可以是绝对路径也可以是相对路径

      • directory:supervisord在生成子进程的时候会切换到该目录

      • user: 如果supervisord以root运行,则会使用这个设置用户启动子程序

      • stdout_logfile:进程标准输出的文件位置

      • stderr_logfile:进程错误日志输出的文件位置

      还有一些可选配置:

      • autorestart = true 在子进程挂掉后重启

      • priority=1子进程启动关闭优先级,优先级低的,最先启动,关闭的时候最后关闭。数字越高,优先级越高

      • numprocs=1启动进程的数目

    • 在新建了ini配置文件后,要用supervisorctl重新加载配置文件

      supervisorctl reload

  • 相关阅读:
    Learn Goroutine
    Redis eviction policies
    Hungarian Algorithm
    Prime and Factors
    HDU 2642 Stars
    236. Lowest Common Ancestor of a Binary Tree
    Leetcode 96. Unique Binary Search Trees
    Search in Rotated Sorted Array
    ID Generator
    概率问题
  • 原文地址:https://www.cnblogs.com/luozx207/p/10764744.html
Copyright © 2011-2022 走看看