Убить процесс Rails после того, как его полезность закончилась - PullRequest
1 голос
/ 24 апреля 2011

Я запускаю приложение Rails (если быть точным, треки) с nginx.Процесс Rails, который запускается, кажется, продолжается бесконечно?Предполагается ли это остановить?

У меня мало общего объема ОЗУ на общем виртуальном хостинге, и я хочу иметь возможность завершить процесс Rails, например, через 10 минут.Есть ли способ сделать это в nginx или Passenger?

Тем временем я запускаю этот bash-скрипт с cron каждые 10 минут:

PID=$(ps ax|grep [R]ails.*lytracks | cut -f2 -d" " | head -n1)

if [ $PID ]; then
    kill -SIGUSR1 $PID
else
    echo Not running
fi

1 Ответ

3 голосов
/ 24 апреля 2011

Ты можешь сделать это, но не должен.

Rails (в рабочем режиме) обычно не пропускает память, поэтому перезапуск процесса не должен иметь никакого эффекта.
Исправное приложение rails с разумной нагрузкой должно стабилизироваться на уровне 30-70 МБ ОЗУ и оставаться там вечно.

Перезапуск каждые 10 минут означает, что каждые 10 минут некоторые из ваших пользователей будут видеть страницу, загрузка которой занимает 20 секунд.Или вообще не загружается.
Вы пытаетесь использовать Rails, как если бы вы использовали PHP-скрипт CGI.Это не предназначено для этого.

Если у вас есть утечки памяти, вы должны попытаться выяснить, что их вызывает, а затем исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...