nginx iptv http proxy - memory leaks

Dobrozhansky Sergey mail.invisible на gmail.com
Чт Июн 17 08:57:14 MSD 2010


Добрый день.

Столкнулся с проблемой утечки памяти.

Имеется иптв сервер, раздающий поток по http.
OC:
  - FreeBSD 7.3-RELEASE-p1 i386
  - FreeBSD 8.0-RELEASE-p3 i386.

В сервер приходят мультикаст потоки, которые с помощью udpxy 
перегоняются в http.

Nginx выступает в роли фронтенда.

За пару часов его работы он может забрать порядка гигабайта памяти.

2692 www 1 4 0 258M 244M kqread 5 5:59 3.37% nginx
2691 www 1 4 0 18484K 5124K kqread 2 4:25 0.00% nginx
2693 www 1 4 0 166M 151M kqread 4 3:34 0.00% nginx
2690 www 1 4 0 119M 105M kqread 0 3:09 0.00% nginx

Версии пробовались:
- nginx/0.8.41
- nginx/0.7.67
- nginx/0.7.66

Результат одинаковый.

  Конфиг:

        user  www;
         worker_processes  4;

         events {
             worker_connections  2048;
         use kqueue;
         }

         http {
                 limit_zone   one  $binary_remote_addr  10m;

             sendfile       on;
             tcp_nopush     on;
             tcp_nodelay    on;

keepalive_timeout 5;
reset_timedout_connection  on;

proxy_buffering off;

                 server_tokens off;

             log_format  main  '$remote_addr - $remote_user 
[$time_local] $status '
                               '"$request" $body_bytes_sent 
"$http_referer" '
                               '"$http_user_agent" "http_x_forwarded_for"';

             access_log  /var/log/nginx.log  main;


     client_header_timeout  3m;
     client_body_timeout    3m;
     send_timeout           3m;

           server {
                 listen       4025;
                 server_name  localhost;

                 limit_conn   one  5;

                 access_log  /var/log/nginx.log  main;


     if ($http_user_agent !~* (^MPlayer*|^VLC*|^NSPlayer*|^RealtekVOD*)) {
         return 444;
     }

                 location / {
                     proxy_pass         http://127.0.0.1:4026/;
                     proxy_redirect     off;


                     client_max_body_size       10m;
                     client_body_buffer_size    128k;


                     proxy_connect_timeout      90;
                     proxy_send_timeout         90;
                     proxy_read_timeout         90;

     allow 192.168.160.0/19;
     allow 192.168.128.0/24;
         deny    all;


rewrite ^/watch/iptv2$ /watch/224.5.5.2:1234;
rewrite ^/watch/iptv3$ /watch/224.5.5.3:1234;
rewrite ^/watch/iptv4$ /watch/224.5.5.4:1234;
rewrite ^/watch/iptv5$ /watch/224.5.5.5:1234;
rewrite ^/watch/iptv6$ /watch/224.5.5.6:1234;
rewrite ^/watch/iptv7$ /watch/224.5.5.7:1234;
rewrite ^/watch/iptv8$ /watch/224.5.5.8:1234;
rewrite ^/watch/iptv9$ /watch/224.5.5.9:1234;
rewrite ^/watch/iptv10$ /watch/224.5.5.10:1234;

         }

     }
}




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