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