【问题标题】:Monit starting/restarting processes in serial串行监控启动/重启过程
【发布时间】:2014-09-09 11:09:00
【问题描述】:

我正在使用 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 分钟,而重新启动一切的时间也差不多。 monit 不是所有关于并行运行的事情吗?我不敢相信这是正确的行为,那么我做错了什么疯狂的事情呢?谢谢!

【问题讨论】:

    标签: ubuntu parallel-processing monit


    【解决方案1】:

    您应该在异步调用中转换您的启动脚本,将其发送到后台。然后使用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
    

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,我相信我已经解决了。

      monit 会等待 pid 文件出现,然后再继续启动其他进程。由于bundle exec 和rails 加载的速度很慢,rake 任务需要很长时间才能真正写出pidfile。

      解决方法是将 rake 任务置于后台,立即从启动脚本中写出 pidfile 并分离:

      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 >> /srv/app/shared/log/qless-1.log 2>&1 & echo $! > /srv/app/shared/tmp/pids/qless-1.pid; detach'"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        • 2014-09-27
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        相关资源
        最近更新 更多