[emerg] 6428#0: malloc() 3053187144 bytes failed (12: Cannot	allocate memory)
    Maxim Dounin 
    mdounin на mdounin.ru
       
    Пт Мар 25 16:47:54 MSK 2011
    
    
  
Hello!
On Fri, Mar 25, 2011 at 11:53:47AM +0300, Eugene Batogov wrote:
> Приветствую всех.
> Возникли две интересные проблемы, а точнее записи в nginx.log:
> ...
> 2011/03/18 17:34:46 [alert] 6431#0: ngx_slab_free(): chunk is already free
> 2011/03/18 17:34:46 [alert] 6429#0: ngx_slab_free(): chunk is already free
> 2011/03/18 17:34:46 [alert] 6429#0: ngx_slab_free(): chunk is already free
> 2011/03/18 17:35:16 [alert] 6429#0: ngx_slab_free(): chunk is already free
> 2011/03/18 17:35:16 [alert] 6429#0: ngx_slab_free(): chunk is already free
> 2011/03/18 17:35:46 [alert] 6433#0: ngx_slab_free(): chunk is already free
> 2011/03/18 17:35:46 [alert] 6433#0: ngx_slab_free(): chunk is already free
> 2011/03/18 17:36:16 [crit] 6436#0: ngx_slab_alloc() failed: no memory
> 2011/03/18 17:36:16 [crit] 6436#0: ngx_slab_alloc() failed: no memory
> 2011/03/18 17:36:16 [crit] 6433#0: ngx_slab_alloc() failed: no memory
> 2011/03/18 17:36:16 [crit] 6433#0: ngx_slab_alloc() failed: no memory
> 2011/03/18 17:36:16 [crit] 6433#0: ngx_slab_alloc() failed: no memory
> 2011/03/18 17:36:16 [crit] 6433#0: ngx_slab_alloc() failed: no memory
> 2011/03/18 17:36:16 [crit] 6429#0: ngx_slab_alloc() failed: no memory
> 2011/03/18 17:36:16 [crit] 6429#0: ngx_slab_alloc() failed: no memory
> ....
> Почему появляются эти сообщения?
> Кто их инициатор?
Функции ngx_slab_free() и ngx_slab_alloc() используются для работы 
с разделяемой памятью.
Сообщение о "no memory" от ngx_slab_alloc() может быть не 
фатальным (просто память в соответствующей зоне кончилась).
Сообщение "ngx_slab_free(): chunk is already free" явно указывает 
на проблему, вероятнее всего - на некорректную работу с 
разделяемой памятью в стороннем модуле.  Подозреваю, что под 
"сторонним модулем" в данном случае следует понимать 
nginx_http_push_module.
Более подробную информацию можно попытаться получить включив 
debug log[1].
[1] http://wiki.nginx.org/Debugging
> и вторая:
> ...
> 2011/03/18 17:30:16 [emerg] 6428#0: malloc() 3053187144 bytes failed (12:
> Cannot allocate memory)
> ...
> Под что nginx выделяет так много памяти?
> Как это можно узнать?
Аналогично - включать debug log.
[...]
> И еще возникла проблема с остановом nginx после использования
> nginx_http_push_module.
> Он очень долго останавливается, такое ощущение, что ждет окончания
> таймаутов.
Плавное завершение рабочих процессов предполагает, что nginx 
дожидается окончания всех запросов, и только после этого выходит.  
Так что ничего удивительного тут нет.
> --------------
> Наши окружения:
> -----------
> nginx version: nginx/0.7.65
[...]
> nginx version: nginx/0.8.53
Я бы рекомендовал обновиться как минимум до последней версии 
stable, 0.8.54.
Maxim Dounin
    
    
Подробная информация о списке рассылки nginx-ru