supervisor管理启动重启,Java,Go程序Demo
简介
Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为后台守护进程,异常退出时能自动重启
1、安装
yum -y install supervisor
2、配置默认配置文件
echo_supervisord_conf > /etc/supervisord.conf
3、修改主配置文件配置
vim /etc/supervisord.conf
... ...
# 其他配置保持默认即可
[include]
files = /etc/supervisord.d/*.ini
# 开启web控制台
[inet_http_server] ; inet (TCP) server disabled by default
port=0.0.0.0:9009 ; ip_address:port specifier, *:port for all iface
username=root ; default is no username (open server)
password=root ; default is no password (open server)
4、创建子进程 supervisor.ini 配置文件之后放在 /etc/supervisord.d/ 文件夹下
giftpanel go程序
recharge java程序
[program:giftpanel]
#指定进程的工作目录
directory=/opt/gs/giftpanel/
#管理的进程的启动命令
command=/opt/gs/giftpanel/gift-panel -DserviceCenter=ip -Dnamespace=gs-test -DserverPort=9082
#启动的进程数量
numprocs=1
#如果设置为 "true",则在 Supervisor 启动时会自动启动该进程。
autostart=true
#重试次数
startretries=3
#是否应自动重新启动该进程
autorestart=true
#"redirect_stderr" 参数指定了是否将进程的标准错误重定向到标准输出文件中。如果设置为 "false",则标准错误将不会被重定向到标准输出文件中。
redirect_stderr=false
#log目录
stdout_logfile=/data/supervisorlogs/gs/giftpanel.log
#"stdout_logfile_maxbytes" 参数指定了标准输出日志文件的最大大小,一旦达到这个大小,日志文件将会被回滚。
stdout_logfile_maxbytes=50MB
#"stdout_logfile_backups" 参数指定要保留的标准输出日志文件的备份数量。当日志文件达到指定数量时,最旧的备份将被删除
stdout_logfile_backups=10
#err log目录
stderr_logfile=/data/supervisorlogs/gs/err/giftpanel.err.log
#"stderr_logfile_maxbytes" 参数指定了标准错误输出日志文件的最大大小,一旦达到这个大小,日志文件将会被回滚
stderr_logfile_maxbytes=10MB
[program:recharge]
command=/usr/lib/jvm/java-1.8.0/bin/java -jar -server -Xms512M -Xmx2048M -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/gs/recharge/heapdump.hprof -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/data/gs/recharge/gc.log -DserverId=500 -DserviceCenter=ip -Dnamespace=gs-test -DserverPort=9090 /opt/gs/recharge/recharge-1.0-SNAPSHOT-gs.jar
numprocs=1
autostart=true
startretries=3
autorestart=true
redirect_stderr=false
stdout_logfile=/opt/supervisorlogs/recharge.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stderr_logfile=/opt/supervisorlogs/recharge.log
stderr_logfile_maxbytes=10MB
#如果需要配置分组 后面添加配置
[group:gs]
programs=giftpanel,recharge
5、启动
第一次配置需要重启supervisord
systemctl start supervisord.service
之后添加子配置(*.ini)文件 只需要update即可
supervisorctl update
6,1启动项目未分组情况下
重启所有
supervisorctl restart all
supervisorctl restart recharge
supervisorctl restart giftpanel
停止所有
supervisorctl stop all
supervisorctl stop giftpanel
supervisorctl stop recharge
6,2启动项目分组情况下
重启所有
supervisorctl restart gs:*
重启
supervisorctl restart gs:recharge
supervisorctl restart gs:giftpanel
停止所有
supervisorctl stop gs:*
停止
supervisorctl stop gs:giftpanel
supervisorctl stop gs:recharge
查看log
tail -f /data/supervisorlogs/gs/giftpanel.log