supervisor管理lumen的队列

7 篇文章 0 订阅
5 篇文章 0 订阅

背景

项目中使用了rabbitmq作为队列,使用lumen中的job来执行,这种方式简直开创了php异步执行的先河,使用了之后,一个字,爽,再也不用担心超时的问题了,什么大型操作都放到队列里面去搞,简直心情愉悦,没有用过laravel 的job,不要说你用过laravel,但是job的管理和运维也是个问题,如果没有统一去管理,多了之后维护是个大问题,挂了怎么办,手动重启?也没人每时每刻的看着啊,不用担心,supervisor解决了这个问题,supervior就是每时每刻的看着你运行的job,挂了帮你自动重启,贴心好用,不仅Job可以这样用,其他的进程也可以用supervisor来管理,配置一下就好了

指令说明

supervisor支持如下指令

supervisor 进入supervisor控制台
supervisor stop 停止进程,可以指定进程名称
supervisor start 启动进程,可以指定进程名称
supervisor restart 重启进程 ,可以指定进程名称
supervisor reload 全部重启进程
supervisor update 更新配置文件,如果有更改,载入更改部分的进程
supervisor reread 读入配置文件,不加载进程
supervisor status 查看管理的进程的信息

配置

配置文件默认在/etc/supervisor.d/目录下,格式为ini格式

[program:process_name] //进程名称,不可重复
process_name=%(program_name)s_%(process_num)02d  //多个进程的进程名称命名方式
command=/usr/bin/php /project/artisan  queue:work --queue=queue_name //启动进程的命令
stdout_logfile=/data/log/queue/queue_name.log //日志输出文件
autostart=true //自动启动
autorestart=true //自动重启
numprocs=1 //进程数
redirect_stderr=true //错误重定向,不知道干嘛的

配置好了之后,

supervisor reread
supervisor update

就可以了,如果有报错,会提示的
然后可以用

supervisor status

查看启动的进程的状态了

平滑重启的问题

好用是好用,但是需要考虑到重启时候的过渡问题,supervisor的重启比较暴力,发送term信号,直接结束进程,在php7.0版本没有PCNTL拓展的,虽然laravel里面有对这个信号做捕获,然后代码里面平滑重启,但是php7.0版本接收不到term信号,所以做不到平滑重启,php7.1以上laravel就可以支持平滑重启了

opcache的问题

如果开了opcache,每次更新代码,需要重启一下所有的进程,不然代码是不会自己更新的,依旧执行的是旧的代码

总结

1,supervisor很强大,但是php7.0不能平滑重启,7.1后laravel支持supervisor指令平滑重启
2,开启了opcache每次发布需要重启所有进程

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值