Ответ 1
Ответ на ваш вопрос лежит в самом вопросе. вы можете убить рубиновые процессы, используя божественный жемчуг, который представляет собой рутинный процесс для мониторинга процессов с помощью github.
в основном, вот как это работает:
- настроить Бога для мониторинга процесса, это может быть что угодно: от apache, пассажира, mongrel или просто простого файла, выполняющего долговременную задачу.
- Установить условные обозначения в файле конфигурации Бога, на основе которого бог выполнит некоторый предопределенный код.
вот простой пример (взятый из docs). рассмотрите этот процесс как долго выполняющийся файл, который работает некорректно, что мы хотим отслеживать для использования в памяти, позволяет называть его simple.rb
loop do
puts 'Hello'
sleep 1
end
теперь мы устанавливаем gem god
и настраиваем его как запущенный как суперпользователь, чтобы он мог убивать/запускать процессы и затем создавать файл конфигурации. пример (также взятый из docs):
God.watch do |w|
w.name = "simple"
w.start = "ruby /full/path/to/simple.rb"
w.keepalive(:memory_max => 500.megabytes)
end
Здесь, поскольку у вас может возникнуть идея, что использование памяти процесса превышает 500 мегабайт, бог перезапустит ее. вот несколько ресурсов, которые могут помочь, если вы начинаете с управления процессами с помощью god
gem:
- Пример gist - Монитор пассажирского рабочего, чтобы убивать работников, которые используют слишком много ОЗУ. (Не используйте Бога, но вместо этого запускает нового пассажира )
- Домашняя страница проекта
- Страница Github
- Учебник indepth с использованием бога с рельсами и пассажиром
Теперь, пожалуйста, помните, что конфигурация ALL для god
- это действительно юридический код ruby, чтобы вы могли стать творческим и делать всевозможные вещи.
Наконец, если вы часто находите, что выполняете длительный процесс, я советую вам попробовать JRuby, который работает намного лучше с длинными запущенные процессы из-за JVM и LOT быстрее, чем МРТ