Supervisor是一个进程管理工具,当进程中断的时候Supervisor能自动重新启动它。
原因
supervisor启动/执行时依赖/tmp/supervisor.sock文件,linux会不定时删除tmp下的文件,导致supervisor无法执行重启命令。
案例重演
1、在linux的目录tmp中,随机删除了supervisor.sock文件;
2、发新版本代码到机器上,利用项目中的run.sh脚本重启进程,脚本内容是“/data1/program/anaconda/bin/supervisorctl $1 mfx_user”;
3、发版工具吐出异常信息“unix:///tmp/supervisor.sock no such file”,但是检测到进程存活所以判断发版成功;
结果:这时候项目代码是新的,但是进程却是旧的。
改进
1、移除supervisor,分布式下没必要使用;
2、更改supervisor的配置文件路径;
网友评论