我们有一个Rails 4.2应用程序,它与sidekiq进程一起运行以执行长任务。
不知何故,在几周前的一次部署中,有些事情发生了变化(capistrano部署过程并没有有效地阻止它,无法找出原因)并且还有一个孤立的sidekiq进程正在运行正在与当前的一个竞争redis队列上的工作。因为这个流程源已经过时了,所以我们开始在我们的应用程序上给出随机结果(取决于哪个流程捕获了这个工作),我们很难在我们解决这个问题之前...
我怎样才能阻止这种情况再次发生?我的意思是,我可以在每次部署后进入VPS并运行macro_rules! bitmessage {
(struct $name:ident($n:ty);
$($field_name:ident: $length:expr, $value:expr;)*) => {
struct $name ($n);
$($name.1 = $name.1 | $value << $length)*
};
}
以检查是否有多个......但它不实用。
答案 0 :(得分:0)
使用您的init系统来管理Sidekiq,而不是Capistrano。
https://github.com/mperham/sidekiq/wiki/Deployment#running-your-own-process