使用Capistrano,Sidekiq和Monit设置部署

时间:2014-08-28 06:06:11

标签: capistrano sidekiq monit

我的应用程序使用Sidekiq处理长(几分钟)运行后台任务。使用Capistrano 2完成部署,并使用Monit监控所有进程。

我在部署过程中使用了capistrano-sidekiq来管理sidekiq进程,但它没有完美运行。在部署期间,有时会启动一个新的sidekiq进程,但旧的进程不会被杀死。我相信这是因为capistrano-sidekiq在部署期间没有通过Monit运行。

第二个问题是因为我的后台任务可能需要几分钟才能完成我的部署应该允许两个sidekiq进程共同存在。应该允许旧的sidekiq进程完成它正在处理的任务,并且新的sidekiq进程应该开始将新任务处理。

我一直在考虑将这样的事情纳入我的部署脚本

部署开始时:

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

代码更新后:

  • 我启动了一个新的sidekiq流程并告诉Monit开始监控它。

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

这听起来怎么样?发现任何警告?

编辑:

找到关于同一问题的好主题。

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

1 个答案:

答案 0 :(得分:0)

对我来说似乎很合理。唯一可能的问题是失去对旧Sidekiq的PID的追踪,但你应该能够使用ps和grep来停止"停止"找到老Sidekiqs。