安装
1 2 3
| apt-get install supervisor yum install supervisor pip install supervisor
|
配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| [program:nginx] user=gsw945 directory=/data/exec/nginx/sbin/ command=/data/exec/nginx/sbin/nginx -g "daemon off;" numprocs=1 autostart=true autorestart=true
startsecs=5 startretries=3 stopsignal=HUP stopasgroup=true stopwaitsecs=5
redirect_stderr=false stdout_logfile_maxbytes=20MB stdout_logfile_backups = 1 stdout_logfile=/var/log/supervisor/%(program_name)s-out.log stderr_logfile_maxbytes=20MB stderr_logfile=/var/log/supervisor/%(program_name)s-err.log
environment=JAVA_HOME="xxxxxx",aaa="bbb"
|
这个 directory 用处: 程序路径还是要用绝对路径,但是后面加的参数就可以生效了。
启动多个进程
numprocs=1 大于 1 个进程的时候:需要加上, 比如程序名 test,启动 3 个进程
1 2 3 4 5 6 7
| numprocs=3 process_name=%(program_name)s_%(process_num)02d
进程名为: test:test_00 test:test_01 test:test_02
|
常用操作
重启 daemon 进程
1
| sudo supervisorctl reload
|
重启服务
1
| supervisorctl restart 服务名或all
|
重启一组服务
重启 test:801-803
1
| supervisorctl restart test:80{1..3}
|
重启所有 test 开头的服务
1
| supervisorctl restart test:
|
常见问题
用 supervisor 守护 Prometheus 发现 Prometheus 经常报错 max open files , 但是操作系统已经将 open files 调整到非常高了。检查下来发现是 supervisor 主配置文件里面限制了 open files 数量
vim /etc/supervisord.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [supervisord] logfile=/var/log/supervisor/supervisord.log logfile_maxbytes=50MB logfile_backups=10 loglevel=info pidfile=/var/run/supervisord.pid nodaemon=false minfds=1024 minprocs=200
|
其中 minfds
是限制打开的文件描述符, 将值调大即可, 需要重启 supervisord 服务。