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)

参考文献

supervisorctl FATAL错误通常是由于supervisord服务没有启动或配置文件出现问题导致的。要解决这个问题,首先需要确保supervisord服务已经成功启动。可以使用命令"supervisord --help"来启动supervisord服务。如果服务已经启动,那么需要检查supervisord配置文件的路径,可以使用命令"cat /etc/supervisor/supervisord.conf"来查看配置文件的路径。 此外,FATAL错误还可能是由于supervisor监控的程序没有启动成功造成的。supervisor只能监控前台程序,无法监控后台启动的程序。如果被监控的程序无法启动,supervisorctl status命令会显示"BACKOFF Exited too quickly (process log may have details)"。要解决这个问题,可以查看被监控程序的日志文件以获取更多的详细信息,然后尝试修复程序启动问题。 总结起来,FATAL错误可能是由于supervisord服务未启动、配置文件有问题或被监控的程序启动失败导致的。要解决这个问题,需要确保supervisord服务已经成功启动,检查配置文件路径以及查看被监控程序的日志文件以获取更多信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [supervisorctl命令的使用讲解](https://blog.csdn.net/weixin_47872288/article/details/125078967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [【非常重要】运行supervisorctl错误提示【FATAL或BACKOFF 】Exited too quickly (process log may have ...](https://blog.csdn.net/weixin_43343144/article/details/97688485)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值