在终止Autoscale EC2实例的同时优雅地停止Sidekiq

时间:2016-03-02 09:06:04

标签: ruby-on-rails-4 amazon-web-services sidekiq autoscaling

我面临着aws autoscaling + sidekiq繁忙工作的问题。我有4个实例在自动扩展组中运行,并且在这些实例上运行了多个Sidekiq进程。所有实例使用相同的 redis

如果我的某个实例当时正在终止,那么忙碌队列中的作业将进入失败状态。它应该排除这些工作。

我在/etc/rc0.d文件夹中添加了一个脚本,它会在实例终止时终止sidekiq进程,但我的作业仍处于失败状态。 我尝试使用TERM和USR1信号进行sidkeiq进程终止,但同样的事情发生在这个信号上。

我使用sidkeiq pro也启用了可靠的提取。

有谁知道,如何在繁忙的队列中实现作业,而不是在faliure状态下进行排队,同时手动或优雅地执行killig sidekiq进程?

1 个答案:

答案 0 :(得分:1)

我自己遇到了同样的问题,并且必须通过将其完全管理到守护程序管理中来修复它,在我的情况下是chkconfig。我不确定您的EC2设置是什么样的,但我发现只有chkconfig知道的脚本才会被执行。

如果您还没有,您可能还需要在脚本中添加一个睡眠,以确保Sidekiq有足够的时间完全退出。