ruby-on-rails - 如何使用监视监视delayed_job

  显示原文与译文双语对照的内容
0 0

状态的监控和与 ,如何监视delayed_job的在网络上是否有任何的例子?

在我能找到使用上帝 ruby 一般suck,一切,但我拒绝为用神,因为长时间运行 processes. ( 在上帝邮件列表中的最新文章)? 上帝内存使用量稳步增长 。)

更新︰ delayed_job现在带有样品监播配置,基于这一问题。

时间:原作者:13个回答

0 0

这是我的工作原理。

  1. monit,这里操作由 collectiveidea叉的delayed_job 除了做积极维护,这里版本提供了一个不错的script/delayed_job 守护进程可以使用的命令, 有关这里版本的Railscasts有一个不错的剧集delayed_job ( ASCIICasts版本 ) 。 这个脚本还有其他一些不错的特性,比如运行多个worker的能力。 我这里没有盖。
  2. 安装监视。我从源代码安装。因为ubuntu的版本太过时了。 我遵循了的这些指令来获取Ubuntu软件包附带的标准 init.d 脚本。 我还需要配置 ./configure --sysconfdir=/etc/monit 所以标准的Ubuntu配置目录被拾起。
  3. 编写一个监视脚本。下面是我所提出的内容:

    check process delayed_job with pidfile/var/www/app/shared/pids/delayed_job.pid
    start program ="/var/www/app/current/script/delayed_job -e production start"
    stop program ="/var/www/app/current/script/delayed_job -e production stop"

    我将这个存储在我的soucre控制系统中,并在它 include/var/www/app/current/config/monit/etc/monit/monitrc 文件中。

  4. 配置监视。这些指令包含广告,但其他的。
  5. 为 Capistrano 编写一个任务以停止和启动。 monit start delayed_jobmonit stop delayed_job 是你想要运行的。 在部署时重新加载监视以获取任何配置文件更改。

遇到的问题:

  1. daemons gem必须安装为 script/delayed_job 才能运行。
  2. 你必须将 Rails 环境传递到 script/delayed_job-e production ( 例如) 。 这里文件在自述文件中记录,但在脚本输出中没有。
  3. 我使用的是 ruby 企业版,所以我需要得到监控以从那个 ruby的副本开始。 由于在Ubuntu中处理路径的方式,我结束了 symlinking /usr/bin/ruby/usr/bin/gem 到REE版本。

在调试监视时,我发现它有助于停止 init.d 版本并从 命令行 运行它,这样你就可以得到错误消息。 否则很难找出为什么会发生错误。

sudo/etc/init.d/monit stop
sudo monit start delayed_job

希望这有助于下一个想要监视 delayed_job的人使用监视。

原作者:
0 0

对于它的价值,你可以使用/usr/bin/env 和监控来设置环境。 这在当前版本的delayed_job,1.8.4,环境( -e ) 选项被废弃时尤其重要。

check process delayed_job with pidfile/var/app/shared/pids/delayed_job.pid
start program ="/usr/bin/env RAILS_ENV=production/var/app/current/script/delayed_job start"
stop program ="/usr/bin/env RAILS_ENV=production/var/app/current/script/delayed_job stop"

在某些情况下,也可能需要设置带有env的路径。

原作者:
0 0

感谢你的脚本。

由于定义的监视,一个被发现的--有一个 '斯巴达径'

/bin:/usr/bin:/sbin:/usr/sbin

而对于我来说,ruby 被安装/链接在/usr/local/bin, 中,试图找出为什么在尝试重启 delayed_job ( 即使使用-v来监视详细模式) 时监视是静默失败的。

最后我不得不这样做:

check process delayed_job with pidfile/var/www/app/shared/pids/delayed_job.pid
start program ="/usr/bin/env PATH=$PATH:/usr/local/bin/var/www/app/current/script/delayed_job -e production start"
stop program ="/usr/bin/env PATH=$PATH:/usr/local/bin/var/www/app/current/script/delayed_job -e production stop"
原作者:
0 0

我不得不将这个页面上的解决方案与toby制作的另一个脚本组合起来,使它能够使用正确的用户进行监视和启动。

所以我的delayed_job.monitrc 看起来像这样:

check process delayed_job
 with pidfile/var/app/shared/pids/delayed_job.pid
 start program ="/bin/su -c '/usr/bin/env RAILS_ENV=production/var/app/current/script/delayed_job start' - rails"
 stop program ="/bin/su -c '/usr/bin/env RAILS_ENV=production/var/app/current/script/delayed_job stop' - rails"
原作者:
0 0

由于我不想作为 root 运行,所以我最终创建了一个bash初始化脚本,用于启动和停止( PROGNAME将是脚本/delayed_job的绝对路径):

start() {
 echo"Starting $PROGNAME"
 sudo -u $USER/usr/bin/env HOME=$HOME RAILS_ENV=$RAILS_ENV $PROGNAME start
}
stop() {
 echo"Stopping $PROGNAME"
 sudo -u $USER/usr/bin/env HOME=$HOME RAILS_ENV=$RAILS_ENV $PROGNAME stop
}
原作者:
0 0

对于 Rails 3,你可能需要设置主环境才能使指南针正常工作,而以下配置适用于我:

check process delayed_job
 with pidfile/home/user/app/shared/pids/delayed_job.pid
 start program ="/bin/sh -c 'cd/home/user/app/current; HOME=/home/user RAILS_ENV=production script/delayed_job start'"
 stop program ="/bin/sh -c 'cd/home/user/app/current; HOME=/home/user RAILS_ENV=production script/delayed_job stop'"
原作者:
...