daemontools и смена бинарника

Igor Sysoev is at rambler-co.ru
Fri Sep 15 21:26:52 MSD 2006


On Fri, 15 Sep 2006, Igor Sysoev wrote:

> On Fri, 15 Sep 2006, Alexey Mahotkin wrote:
>
>> мы запускаем nginx из-под daemontools. соответственно, в конфиге
>> указан daemon off;
>> 
>> мы хотим проапгрейдить бинарник на лету без потери обслуживания.
>> после посылки сигнала USR2 в логах возникает сообщение о том, что
>> сигнал проигнорирован.  Это происходит из-за того, что:
>> 
>>       case ngx_signal_value(NGX_CHANGEBIN_SIGNAL):
>>           if (getppid() > 1 || ngx_new_binary > 0) {
>> 
>>               /*
>>                * Ignore the signal in the new binary if its parent is
>>                * not the init process, i.e. the old binary's process
>>                * is still running.  Or ingore the signal in the old 
>> binary's
>>                * process if the new binary's process is already running.
>>                */
>> 
>>               action = ", ignoring";
>>               ignore = 1;
>>               break;
>>           }
>> 
>> в случае работы из-под монитора процессов (видимо, любого, не только
>> daemontools) у нас getppid() всегда будет больше единицы.
>> 
>> Очень хочется, чтобы эта фича заработала в таком режиме!  Сейчас она
>> видимо работает только для демонов.
>> 
>> Я так понимаю, что можно проверять условие -e $pid.oldbin && ! -e $pid
>> Или как-то так.
>
> Честно говоря, никогда не понимал смысла в использовании daemontools
> для программ, которые написаны специально для использования в режиме
> демона. daemon off и master_process off создавались исключительно
> для удобства разработки, и я практически всё разработку веду в режиме
> daemon off и master_process off.

И кстати, я не понимаю, как после апгрэйда daemontools может
мониторить новый процесс - ведь у его мастера парент будет init (1),
а не daemontools.


Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list