Master процесс nginx 0.6.38 съедает всю доступную память
Maxim Dounin
mdounin at mdounin.ru
Thu Sep 17 14:59:21 MSD 2009
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