博客
关于我
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/

你可能感兴趣的文章
python pandas TimeStamps到夏令时的本地时间字符串
查看>>
Python pandas 数据清洗与数据绘图实战
查看>>
Python Pandas 用顶行替换标题
查看>>
Python pandas 通过 dt 访问器有效地将日期时间转换为时间戳
查看>>
Python Pandas-从DataFrame按类别绘制多个条形图
查看>>
Python Pandas:每月或每周拆分 TimeSerie
查看>>
python pandas中融化的对面
查看>>
python pandas从时间序列中提取唯一日期
查看>>
Python PyQt5 将不再显示此消息复选框添加到 QMessageBox
查看>>
Python PyQt5:如何使用 PyQt5 显示错误消息
查看>>
Python PYSFTP-以字符串/文本形式传递私钥,而不是传递文件路径
查看>>
Python pytest 面试题!
查看>>
Python pytz 时区函数返回一个相差 9 分钟的时区
查看>>
python rabbitmq实现简单/持久/广播/组播/topic/rpc消息异步发送可配置Django
查看>>
Python random和json模块
查看>>
Python random模块seed理解
查看>>
python range()函数
查看>>
Python rdflib可传递查询
查看>>
python redis 集群_python 搭建redis集群
查看>>
python redis连接,在Python中使用Redis连接池的正确方法
查看>>