2010-10-11 6 views

ответ

4

Я не уверен, на каком сервере вы говорите. Но я могу предоставить вам пример для тонких, который поддерживает скользящий перезапуск. (Опция onebyone: true)

Так Monit вы можете использовать что-то вроде,

if ... then exec '/path/to/thin_restart.sh'

thin_restart.sh И было бы что-то подобное,

source /path/to/scripts/rvm 
rvm use [email protected]_ruby 
thin -C thin.yml restart 

И содержание thin.yml будет выглядеть,

port: 1337 
pid: tmp/pids/thin.pid 
rackup: /path/to/config.ru 
daemonize: true 
servers: 2 
onebyone: true 

Есть o Ther способы тонкой настройки перезапуска на основе pid. Вы можете контролировать файлы с помощью pids и перезапускать только тонкий процесс на основе условий.

например.

check process app-1337 
    with pid /path/to/app.1337.pid 
    start = 'thin -d -p 1337 start' 
    stop = 'thin -d -p 1337 -P /path/to/thin.1337.pid stop' 
    if cpu usage > 50% then restart 
check process app-1338 
    with pid /path/to/app.1338.pid 
    start = 'thin -d -p 1338 start' 
    stop = 'thin -d -p 1338 -P /path/to/thin.1338.pid stop' 
    if cpu usage > 50% then restart 

Другой способ - использовать группы, которые обеспечивают monit.

Расширение над примером.

check process app-1337 
    with pid /path/to/app.1337.pid 
    group thin 
    group thin-odd 
    start = 'thin -d -p 1337 start' 
    stop = 'thin -d -p 1337 -P /path/to/thin.1337.pid stop' 
    if cpu usage > 50% then restart 
check process app-1338 
    with pid /path/to/app.1338.pid 
    group thin 
    group thin-even 
    start = 'thin -d -p 1338 start' 
    stop = 'thin -d -p 1338 -P /path/to/thin.1338.pid stop' 
    if cpu usage > 50% then restart 
check process app-1337 
    with pid /path/to/app.1339.pid 
    group thin 
    group thin-odd 
    start = 'thin -d -p 1339 start' 
    stop = 'thin -d -p 1339 -P /path/to/thin.1339.pid stop' 
    if cpu usage > 50% then restart 
check process app-1340 
    with pid /path/to/app.1340.pid 
    group thin 
    group thin-even 
    start = 'thin -d -p 1340 start' 
    stop = 'thin -d -p 1340 -P /path/to/thin.1340.pid stop' 
    if cpu usage > 50% then restart 

Итак, теперь вы можете сделать следующее, чтобы перезапустить все:

monit -g thin restart 

или достичь своего рода подвижного перезапуска, перезапустить нечетные, то даже. Чтобы перезапустить только нечетные:

monit -g thin-odd restart 

и перезапустить даже:

monit -g thin-even restart