惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
T
Threatpost
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
月光博客
月光博客
V
Visual Studio Blog
T
Tailwind CSS Blog
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
Jina AI
Jina AI
J
Java Code Geeks
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
Recorded Future
Recorded Future
C
Check Point Blog
腾讯CDC
N
Netflix TechBlog - Medium
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
SecWiki News
SecWiki News
博客园 - Franky
Hacker News - Newest:
Hacker News - Newest: "LLM"
N
News | PayPal Newsroom
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Security @ Cisco Blogs
W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
Cloudbric
Cloudbric
F
Full Disclosure
The Cloudflare Blog
Y
Y Combinator Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
S
Schneier on Security
Schneier on Security
Schneier on Security
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
AI
AI
N
News and Events Feed by Topic
T
Tor Project blog
P
Palo Alto Networks Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
Google Developers Blog

博客园 - whitesky-root

windows python虚拟环境配置 git clone加速 Ubuntu 22.04 x86_64 cron不执行原因 k8s之认证文件失效,导致kubelet无法正常启动 oop坑 jenkins打包报错: django jsonfield字段更新的坑 golang 效率工具库 gcc免编译安装配置 运维 chroot mysql lost connection to mysql server during query jdk镜像制作 curl 测试websocket请求 kubeadm reset 重置 VMware虚拟机无法联网 python 数据库连接池 Git找回add 后,未commit的文件(使用reset -hard 命令导致文件清除) set -e -x k8s pod重启 deployment重启
supervisor 配置 安装
whitesky-root · 2023-07-10 · via 博客园 - whitesky-root
#停止所有进程
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