2016-03-02 182 views
2

我正面臨aws autoscaling + sidekiq繁忙作業的問題。我有4個實例在自動比例組中運行,並且多個Sidekiq進程在這些實例上運行。所有使用相同的實例redis在終止自動縮放EC2實例時優雅地停止Sidekiq

如果我的一個實例正在終止,那麼忙碌隊列中的作業將被推入失敗狀態。它應該使這個工作順利。

我在/etc/rc0.d文件夾中添加了一個腳本,它會在instace終止時殺掉sidekiq進程,但我的作業仍然處於故障狀態。 我嘗試用TERM和USR1信號進行sidkeiq進程終止,但此信號也發生同樣的情況。

我已經使用sidkeiq pro也啓用了可靠的獲取。

有沒有人知道,如何在繁忙隊列中實現工作應該進入排隊狀態,而不是在faliure狀態,而killig sidekiq手動或優雅地處理?

回答

1

我自己遇到了同樣的問題,不得不通過將其完全安裝到守護進程管理中來修復它,在我的案例chkconfig中。我不確定你的EC2設置是什麼樣的,但我發現只有chkconfig知道的腳本正在執行。

如果您還沒有,您可能還需要爲腳本添加睡眠以確保Sidekiq有足夠的時間完全退出。

+0

請發佈示例腳本,以及如何使用chkconfig來探查守護進程管理。我使用彈性beanstalk和sidekiq,但不用擔心,你的腳本和守護進程只會作爲我的指導。謝謝 – brg

+0

我不允許共享代碼,但我寫的基本結構是服務在Sidekiq啓動時啓動,然後在檢測到主機系統關閉,重新啓動等時執行Sidekiq的正常關閉。 –

+0

如果您的系統使用chkconfig或類似的東西,你會想在/etc/init.d/中創建腳本。你可以閱讀如何在這裏寫腳本:[鏈接](http://shahmirj.com/blog/beginners-guide-to-creating-a-daemon-in-linux) –