i am seeing similar behavior on my machine (also 64-bit ubuntu, but
version 8.10 instead of 9.10).

when i run sudo god -c god_config.god, htop sees two two god processes
starting up and thus two processes for each watch specified in the
config file. i wonder if these are related issues.

that being said, and i am new to god, i'm wondering if your config
file is what's causing the process not to be killed.

w.start = "/usr/local/ruby/bin/ruby /home/xman/code/test.rb"
w.restart = "#{w.start}"

given these commands if you issue sudo god restart jruby-test, it will
just start up a new process for test.rb. it should still work if you
issue it a stop and then start command individually though.

here's the config file i'm using:

RAILS_ROOT = File.dirname(File.dirname(__FILE__))

def generic_monitoring(w, options = {})
  w.start_if do |start|
    start.condition(:process_running) do |c|
      c.interval = 10.seconds
      c.running = false
    end
  end

  w.restart_if do |restart|
    restart.condition(:memory_usage) do |c|
      c.above = options[:memory_limit]
      c.times = [3, 5] # 3 out of 5 intervals
    end
  end

  w.lifecycle do |on|
    on.condition(:flapping) do |c|
      c.to_state = [:start, :restart]
      c.times = 5
      c.within = 5.minute
      c.transition = :unmonitored
      c.retry_in = 10.minutes
      c.retry_times = 5
      c.retry_within = 2.hours
      c.notify = {:contacts => 'support'}
    end
  end

  w.transition(:up, :start) do |on|
     on.condition(:process_exits) do |c|
       c.notify = {:contacts => 'support'}
     end
   end
end

God.watch do |w|
  script = "#{RAILS_ROOT}/app/background/finished_waves_checker.rb"
  w.name = "finished_waves_checker"
  w.group = "wave_processors"
  w.interval = 60.seconds
  w.start = "#{RAILS_ROOT}/script/runner #{script}"
  w.start_grace = 20.seconds
  w.restart_grace = 20.seconds

  w.behavior(:clean_pid_file)

  generic_monitoring(w, :memory_limit => 100.megabytes)
end

5.times do |i|
  God.watch do |w|
    script = "#{RAILS_ROOT}/app/background/background_matcher.rb"
    w.name = "background_matcher_#{i.to_s}"
    w.group = "wave_processors"
    w.interval = 60.seconds
    w.start = "#{RAILS_ROOT}/script/runner #{script}"
    w.start_grace = 20.seconds
    w.restart_grace = 20.seconds

    w.behavior(:clean_pid_file)

    generic_monitoring(w, :memory_limit => 100.megabytes)
  end
end

God.watch do |w|
  script = "#{RAILS_ROOT}/app/background/printed_queue_checker.rb"
  w.name = "kiosk-notification-checker"
  w.group = "wave_processors"
  w.interval = 60.seconds
  w.start = "#{RAILS_ROOT}/script/runner #{script}"
  w.start_grace = 20.seconds
  w.restart_grace = 20.seconds

  w.behavior(:clean_pid_file)

  generic_monitoring(w, :memory_limit => 100.megabytes)
end

any help appreciated.

-h

On Feb 3, 1:48 pm, Ming <[email protected]> wrote:
> on restarts and terminations, god doesn't kill non-daemon processes it
> has started.  i have to kill the manually. system is 64-bit Ubuntu
> 9.10.
>
> >sudo god check
>
> yields:
>
> using event system: netlink
> starting event handler
> forking off new process
> forked process with pid = 12693
> killing process
> [ok] process exit event received
>
> so the cn module requisite has been satisfied.
>
> config:
>
>  God.watch do |w|
>     w.uid = 'xman'
>     w.gid = 'xman'
>     w.log = "/home/xman/code/god.log"
>     w.dir = "/home/xman/code
>     w.name = "jruby-test"
>     w.interval = 180.seconds # default
>     w.start = "/usr/local/ruby/bin/ruby /home/xman/code/test.rb"
>     w.restart = "#{w.start}"
>     w.start_grace = 120.seconds
>     w.restart_grace = 120.seconds
>
>     w.behavior(:clean_pid_file)
>
>     w.start_if do |start|
>       start.condition(:process_running) do |c|
>         c.interval = 5.seconds
>         c.running = false
>       end
>     end
>
>     w.restart_if do |restart|
>       restart.condition(:file_time) do |c|
>         c.above = 180.seconds
>       end
>     end
>
>     # lifecycle
>     w.lifecycle do |on|
>       on.condition(:flapping) do |c|
>         c.to_state = [:start, :restart]
>         c.times = 5
>         c.within = 5.minute
>         c.transition = :unmonitored
>         c.retry_in = 3.minutes
>         c.retry_times = 5
>         c.retry_within = 2.hours
>       end
>     end
>   end

-- 
You received this message because you are subscribed to the Google Groups 
"god.rb" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/god-rb?hl=en.

Reply via email to