supervisord 是Linux/Unix系统下的一个进程管理工具
https://blog.csdn.net/fenglailea/article/details/77146248
[program:http-server]command = /root/.nvm/versions/node/v9.11.1/bin/http-server /var/www/sui -s redirect_stderr=truestdout_logfile=/var/www/sui.txtenvironment=PATH="/root/.nvm/versions/node/v9.11.1/bin"
排错记得写上
redirect_stderr 和
stdout_logfile 环境变量找不见时候记得加上
environment
Supervisor定期重启指定进程
Supervisor是用Python开发的一个客户机/服务器系统,允许用户监视和控制UNIX类操作系统上的多个进程。功能包括监听、启动、停止、重启一个或多个进程。当Supervisor管理的进程出现意外被Kill后,Supervisor监听到事件会自动启动该进程,不需要再写其他脚本去进行重启处理。
关于Supervisor的安装及设定,可以参考Supervisor官网地址:
Supervisor基本操作命令
1.启动进程
supervisorctl -c /etc/supervisord.conf start program_name
- 1
2.停止进程
supervisorctl -c /etc/supervisord.conf stop program_name
- 1
3.重启进程
supervisorctl -c /etc/supervisord.conf restart program_name
- 1
4.启动所有进程
supervisorctl -c /etc/supervisord.conf start all
- 1
5.停止所有进程
supervisorctl -c /etc/supervisord.conf stop all
- 1
Supervisor自动重启机制
Supervisor的 autorestart 参数可以设置进程自动重启的事件,一般设置为:
autorestart=unexpected
- 1
当进程意外被kill或出现异常时,Supervisor会自动重启该进程。
但如果Supervisor监控的进程出现内存泄漏或连接不自动释放的情况,Supervisor并不会执行重启,且Supervisor不支持定期自动重启的方法。
因此当出现这种情况时,我们需要对某些进程进行定期自动重启。
Supervisor定期重启指定进程方法
我们可以利用crontab来实现定期任务,设置如下:
例: 每小时重启进程abc
0 * * * * supervisorctl -c /etc/supervisord.conf restart abc
- 1
当对于某些会出现内存泄漏或连接不自动释放的进程时,我们可以使用以上方法进行定期重启,解决内存泄漏及释放连接数。