【问题标题】:How te restart the sidekiq when it crushes down?崩溃时如何重新启动sidekiq?
【发布时间】:2019-06-29 22:07:45
【问题描述】:

我通过

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

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

如何设置 sidekiq 在崩溃/停止后重新启动?

【问题讨论】:

  • 您需要某种监视器应用程序,例如 godmonit 或您喜欢的任何其他监视器。
  • 我第二次看到它很棒。但是,如果您的 linux 发行版有 systemd 也可以重新启动进程
  • crush 是 Controlled Replication Under Scalable Hashing 的缩写。它是驱动 Ceph 对象存储环境的算法。它似乎不适用于这里。郑重声明,是“Crash”,而不是“Crush”

标签: ruby-on-rails sidekiq restart sidekiq-monitor


【解决方案1】:

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

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

  1. 编写一个执行 sidekiq 的脚本如果还没有运行
  2. 编写一个 cronjob 以每分钟执行一次该脚本

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

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

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

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

Here 是一个很有帮助的主题,关于编写 shell 脚本来检查进程是否已经存在。

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

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

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    相关资源
    最近更新 更多