Resque命令从终端工作,但不能通过bluepill



我想让蓝药丸公司监控我的救援人员。

如果我以root用户从我的rails根目录运行这个命令,它会启动resque worker ok。

cd /var/www/domain.com/current; RAILS_ENV=production QUEUE=* bundle exec rake resque:work

但是当我尝试使用bluepill运行它时,它只是一直尝试启动它并且不给我一个错误。

这是我的蓝药丸日志显示它尝试....!

W, [2011-07-12T22:58:21.640467 #19267]  WARN -- : [domain.com:resque] Executing start command: cd /var/www/domain.com/current; RAILS_ENV=production QUEUE=* bundle exec rake resque:work
I, [2011-07-12T22:58:21.754392 #19267]  INFO -- : [domain.com:resque] Going from down => starting
I, [2011-07-12T22:59:21.334300 #19267]  INFO -- : [domain.com:resque] Going from starting => down
W, [2011-07-12T22:59:22.339873 #19267]  WARN -- : [domain.com:resque] Executing start command: cd /var/www/domain.com/current; RAILS_ENV=production QUEUE=* bundle exec rake resque:work
I, [2011-07-12T22:59:22.479740 #19267]  INFO -- : [domain.com:resque] Going from down => starting

它会一遍又一遍地重复。

这是我的。pill文件的处理过程

app.process("resque") do |process|
  process.start_command = "cd #{RAILS_ROOT}; RAILS_ENV=#{RAILS_ENV} QUEUE=* bundle exec rake resque:work"
  process.daemonize = true
  process.start_grace_time = 10.seconds
  process.stop_grace_time = 10.seconds
  process.restart_grace_time = 10.seconds
end

我已经尝试延长开始宽限期,如果它没有在规定的时间内加载,但没有产生差异。

有谁能帮帮忙吗?

提前感谢瑞克

不适合使用bundle exec(有点老了),但可以轻松编辑。

这是我的生产环境Bluepill AudioBox。FM配置,战斗测试,高兴分享。

ENVIRONMENT = 'production'
RAILS_ROOT  = ENV['RAILS_ROOT'] || "/var/www/myapp/current"
Bluepill.application("myapp", :log_file => "/var/log/bluepill.log") do |app|
  app.uid = "ubuntu"
  app.gid = "ubuntu"
  4.times do |i|
    app.process("uploaders-#{i}") do |process|
      process.working_dir = RAILS_ROOT
      process.group = "resque"
      queues = "amazon_upload"
      process.start_command = "/usr/bin/env VERBOSE=true RAILS_ENV=#{ENVIRONMENT} QUEUE=#{queues} rake resque:work --trace"
      process.stop_command = <<-EOF
      kill -QUIT {{PID}}
      sleep_count=0
      while [ -e /proc/{{PID}} ]; do
        sleep 1
        let "sleep_count+=1"
        if [ $sleep_count -eq 60 ]; then
          kill -TERM {{PID}}
        fi
        if [ $sleep_count -ge 70 ]; then
          kill -KILL {{PID}}
        fi
      done
      EOF
      process.stdout = process.stderr = "#{RAILS_ROOT}/log/resque.log"
      process.pid_file      = "#{RAILS_ROOT}/tmp/pids/resque-uploader-#{i}.pid"
      process.daemonize     = true
      process.start_grace_time = 5.seconds
      process.stop_grace_time = 75.seconds
      process.restart_grace_time = 80.seconds
      process.checks :mem_usage, :below => 350.megabytes, :every => 1.minute, :times => 3
    end
  end
end

@kain的回答解决了你的问题吗?我有一些非常类似的事情刚刚开始发生,看到bluepill没有检测到进程实际上已经成功启动,所以创建了新的

你没有说你使用的是哪个版本的bluepill,但我刚刚修复了一个在这种行为中表现出来的错误。Pull request submitted.

我正在使用capistrano + resque…

在SSH -> sudo service redis start, start

通过capistrano -> sudo service redis start,显示命令工作但没有进程…

相关内容

最新更新