Re: Master процесс nginx 0.6.38 съедает всю доступную память

Одинцов Павел pavel.odintsov at googlemail.com
Thu Sep 17 15:22:41 MSD 2009


Добрый вечер!

Да, такое было вполне возможно, т.к. клиентские настройки сразу
вливаются в конфиг. Но, к сожалению, правильно переписывать конфиг (с
mv) не можем, т.к. рулит конфигами закрытый софт.

Я верно понял, что nginx пытается найти в "старом конце файла" eof и
на этом виснет?

2009/9/17 Maxim Dounin <mdounin at mdounin.ru>:
> Hello!
>
> On Thu, Sep 17, 2009 at 09:11:02AM +0500, Одинцов Павел wrote:
>
>> Доброе утро!
>>
>> Снова воспроизвелось на 0.6.38 и очень красиво воспроизвелось :)
>
> [...]
>
>
>> --- SIGHUP (Hangup) @ 0 (0) ---
>> gettimeofday({1253118667, 649143}, NULL) = 0
>> rt_sigreturn(0x667b29)                  = -1 EINTR (Interrupted system call)
>> gettimeofday({1253118667, 649273}, NULL) = 0
>> uname({sys="Linux", node="server4.hosting.reg.ru", ...}) = 0
>> open("/etc/nginx/nginx.conf", O_RDONLY) = 21
>> fstat(21, {st_mode=S_IFREG|0640, st_size=1023752, ...}) = 0
>> pread(21, "################################"..., 4096, 0) = 4096
>
> [...]
>
>> pread(21, "\tproxy_pass http://87.242.78.188"..., 4093, 1021200) = 2539
>> brk(0x1cc67000)                         = 0x1cc67000
>> pread(21, "", 4094, 1023739)            = 0
>
> [...]
>
> Судя по всему, nginx.conf переписали в процессе чтения его
> nginx'ом.  Прочиталось всего 1023739 байт (1021200 + 2539), а файл
> исходно был размером 1023752 байта.
>
> Баг это не отменяет, но вообще так делать нельзя, файлы надо
> менять атомарно (писать в другое место + rename).  Как минимум от
> подобных действий должна случаться ошибка чтения конфигурации (и
> отмена переконфигурации соответственно).
>
> Maxim Dounin
>
>



-- 
С уважением, Одинцов Павел


More information about the nginx-ru mailing list