Re: поиск ликов

Maxim Dounin mdounin на mdounin.ru
Вт Май 18 23:10:45 MSD 2010


Hello!

On Tue, May 18, 2010 at 05:45:11PM +0300, Alex Antropoff wrote:

> Добрый день, как правильно отлавливать в nginx лики ?
> 
> Предыстория - нужно было причесать доступ к видеокамерам, все разные,
> отдают по http,  mjpeg/asf, урлы/пароли разные.
> 
> Соответственно родился простой вариант вида:
> listen       12345;
> proxy_buffering off;
> # а тут генератором сделано
> location /aaaa {
>         proxy_pass   http://x.y.z.x:80/img/video.asf;
>         proxy_set_header Authorization "Basic ...";
> }
> location /aaab {
>         proxy_pass   http://x.y.z.y:80/mjpg/video.mjpg;
>         proxy_set_header Authorization "Basic ...";
> }
> ...
> и так много раз.
> 
> Проверял и на 0.7.65, и на 0.8.36/37.
> Сторонних модулей нет.
> 
> Раз в несколько дней возникает ситуация, при которой worker-ы
> отъедают все, что только можно, причем постепенно.
> Прогнал valgrind-ом - после выхода все чисто.
> Как правильно выяснить, на что ушли те 500-600Mb в worker ?
> Есть подозрение, что связано с бредовой отдачей mjpeg.

При proxy_buffering off; и отсутствии Content-Length в ответе 
бекенда (т.е. если от nginx'а идёт chunked) - на каждый посылаемый 
блок данных расходуется ~120 байт памяти.  Освобождается эта 
память по окончании запроса.

Можно попробовать увеличить proxy_buffer_size - если блоки от 
бекендов достаточно большие (и дело действительно в вышеописанном 
расходе памяти) - может стать получше.

Ну а вообще - debug log надо смотреть.

Maxim Dounin



Подробная информация о списке рассылки nginx-ru