supervisor 配置 安装

 

#停止所有进程
supervisorctl stop all
#停止程序 func 所有进程
supervisorctl stop func:*
#停止程序 func:nn_0 的进程 
supervisorctl stop func:nn_0

#启动所有进程
supervisorctl start all
#启动程序 func 所有进程
supervisorctl start func:*
#启动程序 func:nn_0 的进程 
supervisorctl start func:nn_0

#重启所有进程
supervisorctl restart all
#重启程序 func 所有进程
supervisorctl restart func:*
#重启程序 func:nn_0 的进程 
supervisorctl restart func:nn_0

#更新新的配置到supervisord
##新增配置并加载,不会重启原来已运行的程序;如果更改原有配置中的进程数,将会把之前的进程都重启掉
supervisorctl update

#重新启动配置中的所有程序
supervisorctl reload

#更新 func 程序中的进程数(numprocs),并且新增、减少进程数,都不会影响到之前的进程数
supervisorctl grace_update func

 

supervisorctl 是 Supervisor 的命令行工具,用于管理由 Supervisor 管理的进程。update 和 reload 都是 supervisorctl 的命令,它们的主要区别在于如何应用配置文件的更改。以下是它们的详细说明:

supervisorctl update
supervisorctl update 用于将 Supervisor 配置文件(通常是 /etc/supervisord.conf)中的更改应用到当前运行的 Supervisor 实例。当你对配置文件进行修改时,可以使用此命令来应用更改,而无需重启整个 Supervisor。它的行为如下:

检测已添加的新配置,启动新的进程。
检测已删除的配置,停止并删除相应的进程。
对于已更改的配置,先停止旧的进程,然后启动新的进程。
需要注意的是,supervisorctl update 只会应用那些与进程管理相关的更改,对于全局配置的更改(例如日志设置)无效。

supervisorctl reload
supervisorctl reload 用于重启 Supervisor 服务,该命令会先停止所有由 Supervisor 管理的进程,然后重新加载配置文件,并重新启动所有进程。这对于应用全局设置的更改非常有用。它的行为如下:

停止所有由 Supervisor 管理的进程。
重启 Supervisor,并重新加载配置文件。
启动所有由 Supervisor 管理的进程。
需要注意的是,supervisorctl reload 会导致所有进程短暂中断,因此可能会影响服务的可用性。

总结
使用 supervisorctl update 来应用与进程管理相关的配置更改,不会影响全局设置,且不会导致所有进程重启。
使用 supervisorctl reload 来应用包括全局设置在内的所有配置更改,但这会导致所有由 Supervisor 管理的进程重启。

 

配置说明:

[program:ai-langchat-api]
command=/data/python-venv/ai-langchat-api/bin/python3 /data/wwwroot/ai-langchat-api/src/app/qa_chat/run_qa_server.py --log_path=/data/logs/ai-langchat-api --svr_port=8080
numprocs=3
process_name=%(program_name)-%(process_num)d
directory=/data/wwwroot/ai-langchat-api/
autostart=true
autorestart=true
autoretrice=10
user=publish
environment=ENV="prod"
redirect_stderr=true
stdout_logfile=/data/logs/ai-langchat-api/ai-langchat-api.log
stopwatisecs=60
priority=994
stdout_logfile_maxbytes = 50MB

如果numprocs>1 则要定义process_name,不常用。一般只是管理主进程,多个进程的情况由程序自身管理维护



supervisor安装
# yum install epel-release
# yum install -y supervisor
# systemctl enable supervisord
# 开机自启动
# systemctl start supervisord
# 启动supervisord服务
# systemctl status supervisord
# 查看supervisord服务状态
# ps -ef|grep supervisord # 查看是否存在supervisord进程



 

http://supervisord.org/configuration.html   官方文档:

command: 必须是非守护进程

 

如果supervisor中的配置 : command 使用的shell脚本拉起业务进程, 注意额外配置如下:否则可能出现孤儿进程

stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程

 

 

[group:tornados]
programs=tornado-0,tornado-1,tornado-2

[program:tornado-0]
# 进程要执行的命令
command=sh -x /data/wwwroot/mongo-zjx-recomm-2-api/script/zjx/start_zjx_svr.sh --port 8182
directory=/data/wwwroot/mongo-zjx-recomm-2-api/
autostart=true
autorestart=true
startsecs=10
startretries=3
exitcodes=0,2
environment=ENV="test"
user=publish
numprocs=1
redirect_stderr=true
stdout_logfile=/data/logs/mongo-zjx-recomm-2-api/mongo-zjx-recomm-2-api.log
stopwaitsecs=60
priority=994
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10

[program:tornado-1]
command=sh -x /data/wwwroot/mongo-zjx-recomm-3-api/script/zjx/start_zjx_svr.sh --port 8183
#process_name=%(program_name)s-%(process_num)d
directory=/data/wwwroot/mongo-zjx-recomm-3-api/
autostart=true
autorestart=true
startsecs=10
startretries=3
exitcodes=0,2
environment=ENV="test"
user=publish
numprocs=1
redirect_stderr=true
stdout_logfile=/data/logs/mongo-zjx-recomm-3-api/mongo-zjx-recomm-3-api.log
stopwaitsecs=60
priority=994
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10

[program:tornado-2]
command=sh -x /data/wwwroot/mongo-zjx-recomm-3-api/script/zjx/start_zjx_svr.sh --port 8184
#process_name=%(program_name)s-%(process_num)d
directory=/data/wwwroot/mongo-zjx-recomm-3-api/
autostart=true
autorestart=true
startsecs=10
startretries=3
exitcodes=0,2
environment=ENV="test"
user=publish
numprocs=1
redirect_stderr=true
stdout_logfile=/data/logs/mongo-zjx-recomm-3-api/mongo-zjx-recomm-3-api.log
stopwaitsecs=60
priority=994
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
~                                
上面的配置supervisor加载成功后,

supervisorctl update

supervisorctl start all

supervisorctl start tornado-0
supervisorctl start tornado-1
supervisorctl start tornado-2

 

posted @ 2023-07-10 10:53  whitesky-root  阅读(146)  评论(0编辑  收藏  举报