gpt4 book ai didi

ubuntu - 串行监视启动/重新启动进程

转载 作者:行者123 更新时间:2023-12-04 18:26:29 27 4
gpt4 key购买 nike

我正在使用 monit 来启动一群运行 qless 的工作人员,这是一个我们用于后台作业的排队系统。我的设置在/etc/monit/conf.d 中有 20 个这样的文件:

check process qless-1 with pidfile /srv/app/shared/tmp/pids/qless-1.pid
start program = "/bin/bash -c 'cd /srv/app/current && RAILS_ENV=prod2 BUNDLE_GEMFILE=/srv/app/current/Gemfile QUEUES=jobs /usr/local/rbenv/shims/bundle exec rake -f /srv/app/current/Rakefile qless:work_with_pidfile[/srv/app/shared/tmp/pids/qless-1.pid] >> /srv/app/shared/log/qless-1.log 2>&1'"
stop program = "/bin/bash -c '/bin/kill `/bin/cat /srv/app/shared/tmp/pids/qless-1.pid`'"

每个文件引用它自己的 pid 文件。启动环境和运行应用程序大约需要一分钟,我们经常需要重新启动它们。问题是 monit 似乎总是以串行方式启动/重启事物。这意味着所有工作人员上线大约需要 20 分钟,重启所有内容也需要大约 20 分钟的时间。 monit 不是所有关于并行运行的东西吗?我不敢相信这是正确的行为,那么我可能做错了什么疯狂的事情呢?谢谢!

最佳答案

您应该在异步调用中转换您的启动脚本,并将其发送到后台。然后使用 with timeout指示 monit 在启动时不要轮询您的服务:您也应该考虑使用服务组,这样您就可以停止所有进程:

check process qless-1 with pidfile /srv/app/shared/tmp/pids/qless-1.pid
start program = "call_to_async_script" with timeout 60 seconds
stop program = "/bin/bash -c '/bin/kill `/bin/cat /srv/app/shared/tmp/pids/qless-1.pid`'"
GROUP qless

然后,您可以一次启动和停止所有服务:

monit stop qless

关于ubuntu - 串行监视启动/重新启动进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25743120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com