【问题标题】:delayed job and monit延迟工作和监控
【发布时间】:2010-10-01 06:56:53
【问题描述】:

似乎无法延迟作业以使用 monit 运行。这是我的delayed_job.monitrc 文件..

check process delayed_job with pidfile /var/www/app/shared/pids/delayed_job.pid
  start program = "cd /var/www/myapp/current && script/delayed_job start RAILS_ENV=production"
                as uid deploy and gid www-data
  stop program =  "cd /var/www/myapp/current && script/delayed_job stop RAILS_ENV=production"
           as uid deploy and gid www-data
  if mem usage > 20% for 5 cycles then alert
  if mem usage > 30% for 5 cycles then restart

我也尝试过直接执行命令,如果没有 monit,这甚至都行不通。我必须在当前目录中才能使 script/delayed_job 开始运行,否则它会引发类似的错误..

/var/www/myapp/current/script/delayed_job start RAILS_ENV=production

/usr/local/lib/ruby/1.8/fileutils.rb:243:in `mkdir': Permission denied - log (Errno::EACCES)
    from /usr/local/lib/ruby/1.8/fileutils.rb:243:in `fu_mkdir'
    from /usr/local/lib/ruby/1.8/fileutils.rb:217:in `mkdir_p'
    from /usr/local/lib/ruby/1.8/fileutils.rb:215:in `reverse_each'
    from /usr/local/lib/ruby/1.8/fileutils.rb:215:in `mkdir_p'
    from /usr/local/lib/ruby/1.8/fileutils.rb:201:in `each'
    from /usr/local/lib/ruby/1.8/fileutils.rb:201:in `mkdir_p'
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/buffered_logger.rb:51:in `initialize'
    from /var/www/myapp/releases/20101001032406/config/initializers/dj.rb:4:in `new'
    from /var/www/myapp/releases/20101001032406/config/initializers/dj.rb:4
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:147:in `load_without_new_constant_marking'
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:147:in `load'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:622:in `load_application_initializers'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:621:in `each'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:621:in `load_application_initializers'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:176:in `process'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `send'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `run'
    from /var/www/myapp/current/config/environment.rb:10
    from /var/www/myapp/current/script/delayed_job:3:in `require'
    from /var/www/myapp/current/script/delayed_job:3

监控状态只是说执行失败。

【问题讨论】:

  • 让你的目录登录到你的 Rails.root 吗?
  • 很抱歉我没听懂。日志位于 /var/www/myapp/shared/logs

标签: ruby-on-rails monitoring delayed-job


【解决方案1】:

我猜该日志目录应该在 /var/www/myapp/current/ 中,并且 DJ 在写入之前尝试 mkdir。最有可能的是,用户“部署”没有写入 /var/www/myapp/current 的权限。

【讨论】:

  • 嗯..不,部署自己的当前目录
  • 我接受了答案,尽管情况并非如此,但它引导我走向了正确的方向。谢谢
  • @badnaam 你的实际情况是什么?你能分享一下吗?这样会帮助关注者吗?
【解决方案2】:

问题是我在 DJ 初始化程序中有以下内容,将 DJ 记录到常规 Rails 日志中(顺便说一句,这不会发生)。我一评论就解决了。

Delayed::Worker.logger = ActiveSupport::BufferedLogger.new("log/{Rails.env}_delayed_jobs.log##", Rails.logger.level)
Delayed::Worker.logger.auto_flushing = 1

【讨论】:

    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多