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

你可能感兴趣的文章
No module named cv2
查看>>
No module named tensorboard.main在安装tensorboardX的时候遇到的问题
查看>>
No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
查看>>
No new migrations found. Your system is up-to-date.
查看>>
No qualifying bean of type XXX found for dependency XXX.
查看>>
No qualifying bean of type ‘com.netflix.discovery.AbstractDiscoveryClientOptionalArgs<?>‘ available
查看>>
No resource identifier found for attribute 'srcCompat' in package的解决办法
查看>>
no session found for current thread
查看>>
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
查看>>
NO.23 ZenTaoPHP目录结构
查看>>
no1
查看>>
NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
查看>>
NOAA(美国海洋和大气管理局)气象数据获取与POI点数据获取
查看>>
NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
查看>>
node exporter完整版
查看>>
Node JS: < 一> 初识Node JS
查看>>
Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime(72)
查看>>
Node 裁切图片的方法
查看>>
Node+Express连接mysql实现增删改查
查看>>
node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
查看>>