宝塔 Supervisor管理器 自动重启守护进程

属于歪门邪道,不多BB,直接上方法

 

 在创建的.py文件中输入以下脚本

from supervisor_main import *
class Get:
   def __init__(self):
        self.program=""
get = Get();
get.program="xxxxxxxx" #你的管理器中守护进程的名称

supervisor_main_obj = supervisor_main();

supervisor_main_obj.StopProcess(get)
print("stop mission over")
supervisor_main_obj.StartProcess(get)
print("start mission over")

 设置计划任务 Shell脚本定时执行

 

 脚本内容 使用python运行刚才的脚本

python /www/server/panel/plugin/supervisor/ShuiFurerunAutoStop.py

 大功告成

 

背景故事:

线上有一个PHP项目,每天有一个固定时间点需要在短时间内处理大量并发数据,比如同时执行一千多个连表修改事务,当然也可以使用部分优秀的异步框架实现,但是这个项目我使用的是tp5+think queue的方式,使用Supervisor管理器多线程的特性,同时开启多个队列监听,框架分批将事务处理推入消息队列,让Supervisor管理器中的任务监听守护进程进行多线程消费,但是这样子就造成一个问题,队列监听的守护进程拉起的数据库连接他是不释放的,只要进程存在就会一直保持,前期还出现了数据库连接超时报错导致队列业务逻辑无法执行的问题,后来通过延长数据库超时时间进行第一次解决,可是后来系统的业务量递增,数据库出现了连接数量过多的问题,我意识到数据库连接资源还得释放,发现重启守护进程可以释放连接,还同时解决了数据库连接超时的问题

 

优化前长期占用大量数据库连接资源不释放,优化后只有短期内高峰,其余时间均保持空闲

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值