博客
关于我
supervisor简洁用例
阅读量:444 次
发布时间:2019-03-06

本文共 2007 字,大约阅读时间需要 6 分钟。

supervisor是一个强大的Linux/Unix系统进程监控和管理工具,由Python编写,可以通过pip安装。它能够将普通的命令行进程转换为后台daemon进程,并监控这些进程的状态,当发现异常退出时可以自动重启。supervisor的主要优势在于它能够对一组进程进行统一管理,这在传统的Linux系统中是不存在的功能。

为什么使用supervisor?

supervisor的主要用途是管理一组或多个进程,尤其是在运行长时间的web服务时非常有用。它能够将web服务的进程组当作自己的子进程管理,当主进程挂掉时,supervisor会自动重启它。这种对进程组的统一管理是Linux系统中难以实现的。

supervisor的主要组件

supervisor的主要组件包括:

  • supervisord:用于管理其他进程的主进程
  • supervisorctl:supervisor的命令行客户端工具,用于与supervisord通信

supervisor的主配置文件:supervisord.conf

supervisord的配置文件分为多个部分,每个部分对应不同的功能。以下是常见配置部分的说明:

[unix_http_server]

该配置块用于配置一个监听在socket上的HTTP服务器。参数包括:

  • file:指定socket文件的路径,supervisorctl通过它与supervisord通信。
  • chmod:指定socket文件的权限。

[supervisord]

该配置块用于设置supervisord进程的全局参数,包括:

  • logfile:指定supervisord的日志文件路径,与子进程的日志文件不同。
  • logfile_maxbytes:指定日志文件的最大大小(单位:KB、MB、GB),默认为50MB。当日志文件达到该大小时会自动轮转。
  • logfile_backups:指定日志轮转的备份数量,默认为10。如果设置为0,则不备份日志文件。
  • loglevel:指定日志级别,支持的值包括:error、warn、info、debug、trace、blather、critical。
  • pidfile:指定supervisord的PID文件路径。
  • nodaemon:如果设置为true,supervisord会在前台启动,而不是以daemon进程形式运行。
  • minfds:supervisord在成功启动前最少需要的文件描述符数量,默认为1024。
  • minprocs:supervisord在成功启动前最少需要的进程描述符数量,默认为200。

[supervisorctl]

该配置块用于设置supervisorctl的通信参数,包括:

  • serverurl:指定supervisorctl与supervisord通信的UNIX socket路径,默认为unix:///tmp/supervisor.sock

[rpcinterface]

该配置块用于设置RPC接口。若想使用supervisord或web接口,需启用该选项:

  • supervisor.rpcinterface_factory:指定RPC接口的工厂类,默认为supervisor.rpcinterface:make_main_rpcinterface

[include]

该配置块用于包含额外的配置文件。例如:

  • files:指定一个或多个INI文件路径,用于读取包含程序配置的文件。

program配置块

每个program配置块用于定义一个要监控的程序,例如web服务器的配置。示例配置如下:

[program:myserver]command=/home/my_web_server/venv/bin/gunicorn -w4 -b0.0.0.0:8105 app.wsgi:applicationdirectory=/home/my_web_serveruser=deploystdout_logfile=/home/logs/server.logstderr_logfile=/home/logs/server.err.log

可选配置

除了基本配置,supervisord还支持以下选项:

  • autorestart=true:在子进程退出时自动重启。
  • priority=1:设置子进程的启动和关闭优先级,数字越高,优先级越高。
  • numprocs=1:指定要启动的进程数量。

reload配置

当你在新建或修改了INI配置文件后,需要使用supervisorctl重新加载配置:

supervisorctl reload

supervisor是一个强大的工具,能够帮助系统管理员轻松管理长时间运行的服务进程。通过合理配置supervisord和supervisorctl,你可以实现对web服务、数据库等关键进程的统一监控和管理。

转载地址:http://zulyz.baihongyu.com/

你可能感兴趣的文章
Promise 原理解析与实现(遵循Promise/A+规范)
查看>>
PyTorch:传递 numpy 数组进行权重初始化
查看>>
PyTorch-Tutorials【pytorch官方教程中英文详解】- 8 Save and Load Model
查看>>
promise.all是并发执行吗_攻破面试灵魂拷问,解读Java并发编程的艺术,本文带你深入l理解...
查看>>
PyTorch-Tutorials【pytorch官方教程中英文详解】- 7 Optimization
查看>>
promise总结
查看>>
Propel项目改为基于TensorFlow.js
查看>>
PyTorch-Tutorials【pytorch官方教程中英文详解】- 6 Autograd
查看>>
properties出现中文乱码解决方法(万能)
查看>>
Property 'submit' of object #<HTMLFormElement> is not a function
查看>>
property--staticmethod--classmethod
查看>>
propertyGrid
查看>>
propertyPlaceholderConfigurer读取配置文件
查看>>
PyTorch-Tutorials【pytorch官方教程中英文详解】- 5 Build Model
查看>>
proteus三输入与非门名字_proteus 元件名称对照表
查看>>
Protobuf - 语法、字段使用规则、注意事项
查看>>
protobuf —— 快速上手
查看>>
protobuf —— 认识和安装
查看>>
Protobuf 三个关键字required、optional、repeated的理解
查看>>
ProtoBuf 原理详解
查看>>