2011-12-25 415 views
0

我使用ruby 1.9.2p280部署Rubyonrails Web應用程序,使用apache乘客和delayed_job作爲後臺作業的rubyonrails 3.07。使用monit監控工具設置Delayed_job

我想監視我的乘客以及delayed_job後臺工作。

我找不到任何一步一步的指導。

非常感謝你

+0

根據我對DelayedJob的經驗,除非必須,否則我建議不要使用它。如果您正在部署到Heroku,請使用它,因爲這是可用的。但是,如果您可以設置自己的cron作業,那麼只需將表格中的記錄寫入表中,並詳細說明需要完成的操作,然後創建一個執行掛起操作的模塊或類方法。設置一個cron作業來讀取表格並執行掛起的動作:'rails runner「SomeModule.some_method」'。我不確定這是什麼意思你想要的監控,但你可能會更好沒有使用DelayedJob。 – 2011-12-25 04:14:02

+0

我想監視我的web服務器進程和delayed_job進程。如果它們達到某個內存點或CPU時間百分比,那麼它們應該自動重新啓動。 delayed_job和乘客的內存消耗會隨着時間的推移而增加,最終可能會導致交換使用率高,導致它們無響應。 – Dongo 2011-12-26 04:22:31

+0

@Steve爲什麼自己寫的類比「delayed_job」處理得更好?爲什麼要使用小時來開發而不是使用那裏的東西並且被廣泛使用? – 2013-03-22 11:11:30

回答

1

添加以下.monitrc文件,如下一提,並運行命令monit reload加載配置。

/etc/monit/web.monitrc

check process apache with pidfile /var/run/apache2.pid 
    start program = "/etc/init.d/apache2 start" 
    stop program = "/etc/init.d/apache2 stop" 
    if cpu > 80% for 5 cycles then restart 
    if totalmem > 300.0 MB for 5 cycles then restart 
    if children > 250 then alert 
    if failed port 80 with timeout 10 seconds then restart 
    if 3 restarts within 5 cycles then timeout 
    mode manual 
    group web 

/etc/monit/delayed_job.monitrc

check process delayed_job with pidfile /mnt/<project>/tmp/pids/delayed_job.pid 
    start program = "/usr/bin/delayed_job_start" 
    stop program = "/usr/bin/delayed_job_stop" 
    mode manual 
    group delayed_job 

的/ usr /斌/ delayed_job_start

#!/bin/sh 

cd /mnt/<project> && RAILS_ENV=production ruby script/delayed_job start 
+0

對不起,我正在問apache,而不是nginx。我找不到任何幫助,例如:如果cpu使用率> 80%5個週期,然後重新啓動。這是什麼意思5個週期? – Dongo 2011-12-26 04:24:38

+0

用apache更新了答案。週期數= monit檢查狀態的次數。當monit發現apache進程的CPU使用率連續5次檢查時大於85%時,它將重新啓動apache。 – 2011-12-26 10:39:15

+0

只是一個更真實的快速問題,我找不到apache2的pid文件?我的系統中沒有/var/run/apache2.pid。怎麼了 ?當使用monit時,我必須停止我的系統中的apache2守護進程並讓monit啓動它嗎?非常感謝你的幫助 – Dongo 2011-12-27 02:21:19