В последнее время я очень полюбил 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'
Любая помощь очень ценится!