使用Capistrano,Sidekiq和Monit设置部署

问题描述 投票:0回答:1

我的应用程序使用Sidekiq来处理长时间(数分钟)的后台运行任务。 部署是通过Capistrano 2完成的,所有过程都通过Monit进行监控。

我在部署过程中使用capistrano-sidekiq来管理sidekiq进程,但效果并不理想。 在部署期间,有时会启动新的sidekiq进程,但旧进程不会被杀死。 我相信发生这种情况是因为capistrano-sidekiq在部署期间未通过Monit运行。

第二个问题是,由于我的后台任务可能需要几分钟才能完成我的部署,因此应该允许两个sidekiq进程共存。 应允许旧的sidekiq进程完成其正在处理的任务,而新的sidekiq进程应开始将新任务纳入处理过程。

我一直在我的部署脚本中考虑类似这样的事情

部署开始时:

  • 我告诉Monit取消监控sidekiq进程
  • 我停止当前的sidekiq流程,并给它10分钟以完成其任务

代码更新后:

  • 我开始一个新的sidekiq进程,并告诉Monit开始对其进行监视。

如果直到停止的sidekiq进程最终被杀死之前,都没有删除pid文件,我可能需要将sidekiq进程pid文件移到发行目录中。

听起来如何? 有任何注意事项吗?

编辑:

找到了一个很好的话题。

http://librelist.com/browser//sidekiq/2014/6/5/rollback-signal-after-usr1/#f6898deccb46801950f40ad22e75471d

capistrano sidekiq monit
1个回答
0
投票

对我来说似乎合理。 唯一可能的问题是失去对旧的Sidekiq的PID的跟踪,但是您应该能够使用ps和grep来“停止”查找旧的Sidekiq。

© www.soinside.com 2019 - 2024. All rights reserved.