Установка пределов потребления памяти с помощью Upstart

В последнее время я очень полюбил Upstart. Раньше я использовал God, Monit и Bluepill, но мне не очень нравятся эти решения, поэтому я даю Upstart попробовать.

Я использовал гем Foreman для создания некоторых базовых файлов конфигурации Upstart для своих процессов в / etc / init . Однако эти сгенерированные файлы обрабатывают только возрождение аварийного процесса. Мне было интересно, можно ли указать Upstart перезапустить процесс, который, например, потребляет > 150 МБ памяти, как в случае с Monit, God или Bluepill.

Я прочитал документы Upstart и это похоже на то, что я ищу. Хотя я понятия не имею, как настроить что-то вроде этого.

То, что я в основном хочу, довольно просто. Я хочу перезапустить мой веб- процесс, если используется память > 150 МБ RAM. Вот файлы, которые у меня есть:

|-- myapp-web-1.conf
|-- myapp-web-2.conf
|-- myapp-web-3.conf
|-- myapp-web.conf
|-- myapp.conf

И их содержимое:

myapp.conf

pre-start script

bash << "EOF"
  mkdir -p /var/log/myapp
  chown -R deployer /var/log/myapp
EOF

end script

myapp-web.conf

start on starting myapp
stop on stopping myapp

myapp-web-1.conf / myapp-web- 2.conf / myapp-web-3.conf

start on starting myapp-web
stop on stopping myapp-web
respawn

exec su - deployer -c 'cd /var/applications/releases/20110607140607; cd myapp && bundle exec unicorn -p $PORT >> /var/log/myapp/web-1.log 2>&1'

Любая помощь очень ценится!

19
задан Michael van Rooijen 7 June 2011 в 14:35
поделиться