我通过启动了sidekiq
bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production
有一段时间,Sidekiq崩溃了,忙=0,排队>0。
如何设置sidekiq在崩溃/停止后重新启动?
您可以使用一些自动化包,或者编写自己的bash脚本来实现这一点。
我个人更喜欢自己写剧本,所以让我解释一下:
- 编写一个脚本,如果sidekiq尚未运行,则执行该脚本
- 每分钟编写一个cronjob来执行该脚本
请注意,此方法不是即时的,这意味着您可能会有长达1分钟的停机时间,因为cronjob每分钟都在工作。因此,如果您的项目对此很敏感,您可能希望使用流程管理工具之一,如monit
或god
。
你的bash脚本应该包含你的命令
bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production
但是,如果要将脚本存储在项目目录之外,请确保使用绝对路径。
这里有一个关于编写shell脚本以检查进程是否已经存在的有用主题。
要每分钟运行一次脚本,请执行以下操作:
- 转到您的终端
- 类型
crontab -e
- 附加
* * * * * /bin/bash -l -c 'cd /PATH/TO/YOUR/DIR && sh SCRIPTNAME.sh'
- 保存并退出编辑器
这样做,就是告诉计算机每分钟执行一次脚本。通常,人们更喜欢只写* * * * * /path/to/script.sh
而不是他们的crontab,但这在某些情况下是失败的。
希望这能有所帮助。