2

所以我在可靠地启动上帝时遇到了问题。在一切成功之前,我可能需要重新启动多次。

OSX 10.6.8
Ruby 1.9.3-p236
god 0.13.2

我有一个配置文件,我在其中指定监视两个进程,如下所示:

bindir = "/Users/me/foobar"
basedir = "/Users/me/foobar"

God::Contacts::Email.defaults do |d|
  d.from_email = 'god@example.copm'
  d.from_name = 'God'
  d.delivery_method = :sendmail
end

God.contact(:email) do |c|
  c.name = 'me'
  c.group = 'foobar'
  c.to_email = 'me@example.com'
end

God.watch do |w|
  w.name = "foo"
  w.group = "foobar"
  w.dir = basedir
  w.log = "logs/foo.log"
  w.start = "ruby #{bindir}/foo.rb"
  w.keepalive

  w.transition(:up, :start) do |on|
    on.condition(:process_exits) do |c|
      c.notify = 'me'
    end
  end
end

God.watch do |w|
  w.name = "bar"
  w.group = "foobar"
  w.dir = basedir
  w.log = "logs/bar.log"
  w.start = "ruby #{bindir}/bar.rb"
  w.keepalive

  w.transition(:up, :start) do |on|
    on.condition(:process_exits) do |c|
      c.notify = 'me'
    end
  end
end

如果我用 -D 开始上帝,所以我在控制台中看到它总是可以正常工作并且我的进程开始了。

god -c foobar.god -D

都好。然后我还可以运行以下内容:

god status
god stop foobar
god start foobar
god terminate foobar

所有作品。

现在,如果我在没有 -D 选项的情况下开始,它要么 (a) 正常工作,(b) 上帝启动进程,但它本身没有(或死亡),或者 (c) 什么都没有启动。

我一直在寻找某种日志条目,但没有找到任何表明存在故障的信息。同样正如我已经描述的那样,它确实有时会起作用。只是不是每次。

我看到的另一个问题(我现在不知道它是否相关)是当上帝和我的进程都运行良好(没有 -D)时,大多数时候无法成功向它发送命令. 即类似的东西

god stop foobar

不会终止,只会产生很多点

god terminate foobar
..............................................

同时我可以在顶部看到上帝开始占用大量 CPU。

我必须按 ctrl-c 然后用 -9 杀死上帝进程,然后手动清理受监视的进程。

我还没有在网上找到任何与我所描述的内容相近的东西。我非常想知道发生了什么。任何人都可以帮助或你有什么建议我可以尝试吗?

提前致谢!

更新:

杀死上帝进程会导致此堆栈跟踪:

/Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:570:in `load'
/Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:632:in `recv_reply'
/Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:918:in `recv_reply'
/Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1197:in `send_message'
/Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1088:in `block (2 levels) in method_missing'
/Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1172:in `open'
/Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1087:in `block in method_missing'
/Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1105:in `with_friend'
/Users/me/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/drb/drb.rb:1086:in `method_missing'
/Users/me/.rvm/gems/ruby-1.9.3-head/gems/god-0.13.2/lib/god/cli/command.rb:183:in `terminate_command'
/Users/me/.rvm/gems/ruby-1.9.3-head/gems/god-0.13.2/lib/god/cli/command.rb:30:in `dispatch'
/Users/me/.rvm/gems/ruby-1.9.3-head/gems/god-0.13.2/lib/god/cli/command.rb:10:in `initialize'
/Users/me/.rvm/gems/ruby-1.9.3-head/gems/god-0.13.2/bin/god:121:in `new'
/Users/me/.rvm/gems/ruby-1.9.3-head/gems/god-0.13.2/bin/god:121:in `'
/Users/me/.rvm/gems/ruby-1.9.3-head/bin/god:19:in `load'
/Users/me/.rvm/gems/ruby-1.9.3-head/bin/god:19:in `'
/Users/me/.rvm/gems/ruby-1.9.3-head/bin/ruby_noexec_wrapper:14:in `eval'
/Users/me/.rvm/gems/ruby-1.9.3-head/bin/ruby_noexec_wrapper:14:in `'

在线搜索在 Ruby 中发现了这个错误。

4

0 回答 0