首页 > 解决方案 > 当sidekiq崩溃时如何重新启动它?

问题描述

我通过以下方式启动了sidekiq

bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production

有时,Sidekiq 被压垮了,busy=0 并且 enqueue > 0。

如何设置 sidekiq 在压碎/停止后重新启动?

标签: ruby-on-railssidekiqrestartsidekiq-monitor

解决方案


您可以使用一些自动化软件包,或编写自己的 bash 脚本来执行此操作。

我个人更喜欢编写自己的脚本,所以让我解释一下:

  1. 如果尚未运行,则编写一个执行 sidekiq 的脚本
  2. 编写一个 cronjob 每分钟执行一次该脚本

请注意,此方法不是 Instant,这意味着您可能会停机长达 1 分钟,因为 cronjob 每分钟都在工作。因此,如果您的项目对此敏感,您可能希望使用其中一种流程管理工具,例如monitgod

你的 bash 脚本应该包含你的命令,

bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production

但是,如果要将脚本存储在项目目录之外,请确保使用绝对路径。

是有关编写 shell 脚本以检查进程是否已存在的有用主题。

要每分钟运行一次脚本,请执行以下操作:

  1. 转到您的终端
  2. 类型crontab -e
  3. 附加* * * * * /bin/bash -l -c 'cd /PATH/TO/YOUR/DIR && sh SCRIPTNAME.sh'
  4. 保存并退出编辑器

通过这样做,您告诉您的计算机每分钟执行一次您的脚本。通常人们更喜欢只写到* * * * * /path/to/script.sh他们的 crontab,但在某些情况下这会失败。

希望这可以帮助。


推荐阅读