博客
关于我
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 Selenium设计模式 —— POM
查看>>
Python Serial:如何使用 read 或 readline 函数一次读取多个字符
查看>>
Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?
查看>>
Python setup.py:数据文件无法复制目录:不存在或不是常规文件
查看>>
Python setuptools sdist:仅安装版本化文件
查看>>
Python Shell下使用matplotlib
查看>>
Python Slice How-to,我知道Python Slice,但我怎么才能使用内置的Slice对象呢?
查看>>
python socket分包发送数据
查看>>
python socket模块_Python socket模块实现TCP服务端客户端
查看>>
Python SOCKS5代理客户端HTTPS
查看>>
Python Soc网络分析:通过使用函数迭代列表来计算机会网络
查看>>
Python SQL和NoSQL数据库操作实战
查看>>
python stdout flush_sys.stdout.flush()方法的用法
查看>>
python string 运算
查看>>
Python str与bytes之间的转换
查看>>
Python subprocess ffmpeg
查看>>
python subprocess Permission denied Errno 13
查看>>
Python subprocess.call - 将变量添加到 subprocess.call
查看>>
Python Subprocess.Popen 从一个线程
查看>>
Python subprocess.Popen 作为 Windows 上的不同用户
查看>>