Проблемы с богом
Так что у меня проблемы с надежностью бога. Возможно, мне придется перезагрузить несколько раз, прежде чем все получится.
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, либо (а) работает как следует, (б) бог запускает процессы, но сам не (или умирает), либо (в) ничего не запускается вообще.
Я искал какую-то запись в журнале, но не смог найти ничего, что указывало бы на сбой. Кроме того, как я уже описал, это время от времени работает. Просто не каждый раз.
Другая проблема, с которой я столкнулся (я не знаю, связано ли это как-то в данный момент), заключается в том, что, когда бог и все мои процессы работают нормально (без -D), в большинстве случаев невозможно успешно отправлять ему команды., То есть что-то вроде
god stop foobar
просто не заканчивается и просто приводит к множеству точек
god terminate foobar
..............................................
и в то же время я могу видеть в верхней части, что бог начинает занимать много процессора.
Я должен нажать 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 `блок (2 уровня) в 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.