我最近變得非常喜歡Upstart。以前我一直在使用上帝,Monit和Bluepill,但我不太喜歡這些解決方案,所以我會試試Upstart。使用Upstart設置內存消耗限制
我一直在使用Foreman Gem來爲我的進程生成一些基本的Upstart配置文件,文件名爲/etc/init
。但是,這些生成的文件只能處理崩潰進程的重新生成。我想知道是否可以告訴Upstart重啓一個正在消耗內存的進程,例如Monit,God或者Bluepill。
我通過Upstart docs和this閱讀看起來像我正在尋找的東西。雖然我不知道如何配置這樣的東西。
我基本上想要的是很簡單。如果內存使用量爲> 150mb
ram,我想重新啓動我的web
進程。這些都是我的文件:
|-- 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-W EB-1.conf/MYAPP-網絡2.conf/MYAPP-網絡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'
任何幫助,非常感謝!
嘿,謝謝你的回答。我不太熟悉所有這些,但如果我理解正確,我的(Ruby)應用程序會在超過150MB內存時嘗試分配內存,此時(定義:limit rss 157286400 157286400')會引發異常(在做了一些研究之後,我認爲這個例外會引發:Errno :: ENOMEM),並且通常會導致進程崩潰。雖然可能不在Rails框架中。我得看看這個。謝謝!我想我可以通過你的回答找出其他問題! – 2011-06-09 10:13:39
你有沒有發現這將如何與Ruby/Rails的工作?我非常有興趣爲我們的服務拱門嘗試這一點。 – localshred 2011-06-22 17:03:57
@jnewland Rails應用程序的任何進展? – Autodidact 2011-10-20 15:08:07