Circus进程管理工具配置详解
什么是Circus?
Circus是一个进程管理工具,用于管理和监控多个进程。它特别适合需要运行多个后台进程的应用场景,如Web服务器、任务队列等。Circus提供了丰富的配置选项,允许用户精细控制进程的启动、停止、重启等行为。
配置文件基础
Circus使用INI风格的配置文件进行配置。配置文件由多个节(section)组成,每个节负责配置不同的功能模块。下面我们详细介绍各个配置节及其选项。
核心配置节 [circus]
[circus]节是配置文件的必选节,用于配置Circus的核心行为:
[circus]
check_delay = 5
endpoint = tcp://127.0.0.1:5555
pubsub_endpoint = tcp://127.0.0.1:5556
include = \*.more.config.ini
umask = 002
主要配置项说明
- endpoint:用于circusctl管理Circus的ZMQ套接字地址,默认为
tcp://127.0.0.1:5555 - pubsub_endpoint:接收事件发布的ZMQ PUB/SUB套接字地址,默认为
tcp://127.0.0.1:5556 - check_delay:ZMQ套接字的轮询间隔(秒),默认5秒
- include:包含其他配置文件,支持通配符
- umask:设置umask值,影响文件权限
- statsd:是否启用statsd统计功能
- httpd:是否启用HTTP管理接口
- debug:是否开启调试模式
- loglevel:日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL)
- logoutput:日志输出位置,可以是文件路径或syslog地址
进程监控节 [watcher:NAME]
[watcher:NAME]节用于定义需要监控的进程,可以定义多个这样的节:
[watcher:myprogram]
cmd = python
args = -u myprogram.py $(circus.wid) $(CIRCUS.ENV.VAR)
warmup_delay = 0
numprocesses = 5
关键配置项
- cmd:要执行的程序路径
- args:传递给程序的参数,支持变量替换
- numprocesses:启动的进程数量
- warmup_delay:进程启动间隔(秒)
- autostart:是否随Circus自动启动
- respawn:进程退出后是否自动重启
- uid/gid:以指定用户/组运行进程
- working_dir:进程工作目录
- copy_env:是否复制当前环境变量
- virtualenv:指定Python虚拟环境路径
进程资源限制
可以通过rlimit_前缀的配置项限制进程资源:
rlimit_nofile = 500 # 限制最大打开文件数为500
rlimit_core = 1000000 # 限制core文件大小为1MB
日志流处理
Circus提供了强大的日志处理功能,可以配置stdout和stderr的输出方式:
stdout_stream.class = FileStream
stdout_stream.filename = test.log
stdout_stream.max_bytes = 1073741824 # 1GB
stdout_stream.backup_count = 5 # 保留5个备份
支持的流处理类包括:
- FileStream:文件输出,支持日志轮转
- WatchedFileStream:文件输出,依赖外部日志轮转
- TimedRotatingFileStream:按时间轮转日志
- QueueStream:内存队列输出
- StdoutStream:标准输出
- FancyStdoutStream:带颜色和时间戳的标准输出
环境变量节 [env:NAME]
[env:NAME]节用于为特定watcher设置环境变量:
[env:myprogram]
PATH = $PATH:/bin
CAKE = lie
套接字节 [socket:NAME]
[socket:NAME]节用于定义套接字,可以被watcher继承使用:
[socket:web]
host = localhost
port = 8080
family = AF_INET
type = SOCK_STREAM
套接字配置项
- host:主机地址
- port:端口号
- family:套接字族(AF_INET, AF_UNIX等)
- type:套接字类型(SOCK_STREAM等)
- path:UNIX域套接字路径
- umask:UNIX套接字权限掩码
- so_reuseport:是否启用SO_REUSEPORT
插件节 [plugin:NAME]
[plugin:NAME]节用于配置Circus插件:
[plugin:statsd]
use = circus.plugins.statsd.StatsdEmitter
host = localhost
port = 8125
配置继承与包含
Circus支持配置文件的包含和继承:
[circus]
include = *.more.config.ini
include_dir = /etc/circus/conf.d/
最佳实践
- 模块化配置:将不同功能的配置拆分到不同文件,使用include包含
- 资源限制:为关键进程设置合理的资源限制
- 日志管理:为生产环境配置日志轮转
- 环境隔离:使用virtualenv隔离Python环境
- 权限控制:通过uid/gid控制进程运行权限
总结
Circus提供了强大而灵活的配置选项,可以满足各种进程管理需求。通过合理配置,可以实现进程的自动重启、资源限制、日志管理等功能。掌握这些配置选项,可以帮助你更好地管理和监控应用进程。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



