supervisor服务“Exited too quickly“解决方案

【初始问题】supervisor创建一个守护进程,老是提示启动失败

【结论】进程执行后,短时间就断开了

Ⅰ 问题分析

  supervisor开启进程守护失败了,查看下进程执行记录,显示这个进程的指令执行报错了

接下来,查看下supervisor服务运行状况,可以看到有相关报错信息 "Exited too quickly"

复制代码
/www/server/panel/pyenv/bin/supervisorctl status

  提示说"执行太快了",该进程直接就退出,但是设置了autorestart=true,为啥没有重启进程?

看官方解释,说到"自动重启只能在监控的进程在RUNNING 的状态下才有效"

附带官网链接:http://supervisord.org/configuration.html

看到这里,直接可以开始搭建测试环境了

先科普下Supervisor 服务

  一款基于Python的进程管理工具,用来监控可持续运行进程 的状态,当进程意外退出时,Supervisor监听到进程异常退出时,会自动重新启动。
监控的进程要求:进程可长期运行

什么情况下,守护进程会无法开启?

  执行脚本/进程短时间结束,或者报错了,并没有进入Running状态,Supervisor就无法进行重启进程

Ⅱ 场景复现

创建一个python脚本

复制代码
 print(111111)

套到bt上,启动下,直接复现到

Ⅲ 解决方案

解决办法1:修改脚本,使其可一直运行

将python脚本,修改成无限循环的

复制代码
import time
import logging

# 配置日志
logging.basicConfig(
    filename='/www/server/panel/plugin/supervisor/log/test1.log',
    level=logging.DEBUG,
    format='%(asctime)s %(levelname)s: %(message)s'
)

def main():
    logging.info("Script started")
    try:
        while True:
            print(111111, flush=True)
            logging.debug("Running...")
            time.sleep(5)
    except KeyboardInterrupt:
        logging.info("Script stopped")

if __name__ == "__main__":
    main()

效果

解决办法2:调整配置参数startsecs

在配置文件上加这个

复制代码
startsecs=0

  作用就是一启动服务器进程就进入RUNNING 了,只要进入了该状态,这样子就可以让autorestart 强制生效了

  在 supervisor 配置文件中,startsecs 参数用于指定进程启动后需要运行的秒数,以便 supervisor 确认该进程已成功启动并进入稳定状态。如果在配置中设置 startsecs=0,则表示进程只要启动后立即没有异常退出

解决方案3:程序前后口,sleep2s

例如下面的python脚本

复制代码
import time

if __name__ == "__main__":
    time.sleep(2)
    print(1111)
    time.sleep(2)

参考文献

相关推荐
虚无的纽扣11 小时前
【Linux】线程(下):怎么创建、终止与分离一个线程
linux·运维·服务器
叼烟扛炮11 小时前
Linux 学习笔记(七):软件安装与 Vim 编辑器极速入门
linux·学习·编辑器
金色熊族11 小时前
在Qt中使用asan检测内存泄漏(二)--检查依赖库的内存使用
linux·qt·asan
叼烟扛炮11 小时前
Linux 学习笔记(十六):进程的调度与优先级——谁先抢到 CPU?
linux·笔记·学习
幽灵诶11 小时前
学习Linux
linux·学习
kyle~11 小时前
Linux --- CPU 调度机制
linux·运维·数码相机
晴天的雨.99211 小时前
【Linux】编译器gcc/g++
linux·运维·服务器
pirateeee11 小时前
Yocto 构建基于官方 imx6ull-14x14-evk 的 ubuntu 镜像
linux·嵌入式硬件
梦想的初衷~11 小时前
CESM2 完整实操学习大纲:环境搭建、案例运行、耦合模拟与代码开发
linux·地球系统模式·cesm2·气候模式模拟·clm 陆面模型·cam 大气模式·模式移植编译
叼烟扛炮12 小时前
Linux 学习笔记(三):文件管理与文本查看
linux·笔记·学习