• 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

supervisor简洁用例的更多相关文章

  1. MATLAB for循环优化三例

    最近一周,对MATLAB有进行了新一轮的学习,对其矩阵化编程的思维有了更深入的了解.确实精妙! 例1: 将矩阵A= [1 2 3; 2 4 3; 3 4 5]中所有的数字3替换为33. 如果还停留在C ...

  2. Supervisor (进程管理利器) 使用说明 - 运维笔记

    一.Supervisor简单介绍supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序.supervisor与laun ...

  3. Python【基础第三篇】

    set集合 s1=set() 集合特点: 访问速度快 没有重复项 collections系列(数据类型容器模块) 一.计数器(Counter) Counter是对字典类型的补充,用于追踪值的出现次数. ...

  4. AspxGridView使用手记

    AspxGridView使用手记   一.  基本使用方法  4 1.导入Dll文件   4 2.Asp.Net页面控件注册 4 3. Asp.Net页面控件声明    5 4.删除licenses. ...

  5. AspxGridView服务器事件列表

    2.AutoFilterCellEditorCreate (1)语法:publicdelegate void ASPxGridViewEditorCreateEventHandler(object s ...

  6. JAVA 画图机制

    java学习脚印:深入java绘图机制 写在前面 封装性越好的类在使用时,只要清楚接口即可,而不应该让程序员了解其内部结构; 对于平常的绘图来讲,java绘图机制无需了解太多,但是朦胧容易产生错误,绘 ...

  7. 如何打一个RPM包

    如何打一个RPM包 参考链接:RPM打包原理.示例.详解及备查 前言 本文只是一个RPM安装的例子,并没有对RPM做比较详尽的叙述,更为详尽的讲解,可以在上面的链接中找到. RPM是啥? RPM(Re ...

  8. 进程监控工具supervisor 启动Mongodb

    进程监控工具supervisor 启动Mongodb 一什么是supervisor Superviosr是一个UNIX-like系统上的进程监控工具. Supervisor是一个Python开发的cl ...

  9. Android UI自动化用例设计技巧

    一.封装方法 1.编程如何越来越快: 首先,需要经验丰富,知识面广. 其次,每一个熟练编程的人员,都会有自己的一个库,解决各种问题.各种通用的方法函数. 同理,自动化脚本也是编程,测试用例则为需求,U ...

随机推荐

  1. js异步上传图片

    <!DOCTYPE html><html xmlns = "http://www.w3.org/1999/xhtml" ><head><m ...

  2. C++的继承与多态

    ◆ 概念介绍 继承:为了代码的重用,保留基类的原本结构,并新增派生类的部分,同时可能覆盖(overide)基类的某些成员. 多态:一种将不同的特殊行为和单个泛化记号相关联的能力,分为静态多态和动态多态 ...

  3. 【高级】PHP-FPM和Nginx的通信机制

    PHP-FPM 介绍 CGI 协议与 FastCGI 协议 每种动态语言( PHP,Python 等)的代码文件需要通过对应的解析器才能被服务器识别,而 CGI 协议就是用来使解释器与服务器可以互相通 ...

  4. vector(char*)和vector(string)

    vector<char*> ch; vector<string> str; for(int i=0;i<5;i++) { char *c=fun1();//通过这个语句产 ...

  5. elasticsearch6 学习之并发控制

    环境:elasticsearch6.1.2        kibana6.1.2  并发问题无处不在 一.基于_version 的并发控制 在提交数据前先检查提交数据的version与es中存储的ve ...

  6. Everyone is tester

    有一本书叫<人人都是产品经理>,作者在书中介绍了在做产品的过程中学到的思维方式和做事方式,受到行业大众的认可 作为一名测试老鸟,我想说,其实Everyone is tester     为 ...

  7. java并发编程中CountDownLatch和CyclicBarrier的使用

    在多线程程序设计中,经常会遇到一个线程等待一个或多个线程的场景,遇到这样的场景应该如何解决? 如果是一个线程等待一个线程,则可以通过await()和notify()来实现: 如果是一个线程等待多个线程 ...

  8. 【2018ICPC青岛】

    B 题意:给n个问题,每个问题有一个固定的答案ai(<=10^5).现在有m个约束关系,每个约束关系是一个二元组(ui,vi),表示你回答ui.vi问题的答案必须一样. 现在让你输出分别修复一个 ...

  9. 点击--》java9 新特性 详解

    引言: 点击-->java9 新特性 详解 点击-->java8 新特性 详解 正题: 1.局部变量var 将前端思想var关键字引入java后段,自动检测所属于类型,一种情况除外,不能为 ...

  10. kafka 多线程消费

    一. 1.Kafka的消费并行度依赖Topic配置的分区数,如分区数为10,那么最多10台机器来并行消费(每台机器只能开启一个线程),或者一台机器消费(10个线程并行消费).即消费并行度和分区数一致. ...