ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

замирает скачивание файлов




Господа, подскажите, куда копать.

Ситуация такова: имеется довольно нагруженный файловый сервис на линуксе. nginx работает как фронтэнд: проксирует на апач практически все, кроме мелкой статики, и работает с fastcgi для скриптов, которые используются для собственно скачивания файлов. Файлы отдаются с помощью X-Accel-Redirect. Трафика сейчас в районе 100 мегабит (бывает и до 115), однако периодически возникает проблема:
скачивание файла просто застывает в какой-то момент.

Железо:
- intel core 2 quad
- 4 gb ram
- "типа железный raid" интеловый, на 3 винта, уровень 0, работающий с помощью dmraid
uptime в районе 2, в пиковой нагрузке - около 4

sysctl:
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 1800

Конфиг nginx:

=== nginx.conf ===

worker_processes 4;

worker_rlimit_nofile 10240;
worker_rlimit_sigpending 32768;
worker_priority 5;

events {
worker_connections 20480; }

error_log  /var/log/nginx/error.log;

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

'"$upstream_response_time"';

    access_log  /var/log/nginx/access.log;

    gzip on;
    gzip_proxied any;
    gzip_min_length  10240;
    gzip_buffers     32 64k;
gzip_types text/html application/x-javascript text/css text/xml text/plain;

    client_header_timeout  60;
    client_body_timeout    60;
    send_timeout           120;

    client_max_body_size       1800m;
    client_body_buffer_size    128k;
    client_header_buffer_size    4k;
    large_client_header_buffers  16 8k;

    sendfile       on;
    sendfile_max_chunk 1024k;
    tcp_nopush     on;
    tcp_nodelay    on;
    output_buffers   32 256k;
    postpone_output  1460;

    lingering_time     30;
    lingering_timeout  6;
    reset_timedout_connection  on;

    keepalive_timeout  0;
    optimize_server_names on;

    proxy_read_timeout          180;
    proxy_connect_timeout       60;
    proxy_send_timeout          180;

    msie_padding                on;

    proxy_buffer_size           32K;
    proxy_buffers               64 512K;
    proxy_busy_buffers_size     1024K;
    proxy_temp_file_write_size  1024K;

    server {
listen <ip_address>:80 default backlog=1024 rcvbuf=131072 sndbuf=1048576 deferred;
        server_name  <server_name>;

       location / {
                proxy_pass      http://<ip_of_backend>;
                proxy_redirect     off;
                proxy_set_header  Host       $host;
                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header  REMOTE_ADDR  $remote_addr;
                proxy_set_header  REMOTE_USER  $remote_user;
                proxy_set_header  HTTP_COOKIE  $http_cookie;
                proxy_set_header  REQUEST_METHOD  $request_method;

                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location /img {
                root /var/www/<site>/htdocs/www;
        }

        location /js {
                root /var/www/<site>/htdocs/www;
        }

        location /css {
                root /var/www/<site>/htdocs/www;
        }

        location /favicon.ico {
                root /var/www/<site>/htdocs/www;
        }

        location /download/ {
                root /var/www/<site>/fcgi;
                if ($uri ~ '^/download/(.*)$') {
                        set $file $1;
                }
rewrite ^/download/(.*) /download/index_dload.php?url=$file last;
        }

        location ~ ^/download/.+\.php$ {
            fastcgi_pass   unix:/tmp/spawn-fcgi.socket;
            fastcgi_index  index_test.php;

fastcgi_param SCRIPT_FILENAME /var/www/<site>/fcgi$fastcgi_script_name;
            fastcgi_param  QUERY_STRING     $query_string;
            fastcgi_param  REQUEST_METHOD   $request_method;
            fastcgi_param  REQUEST_URI      $request_uri;
            fastcgi_param  CONTENT_TYPE     $content_type;
            fastcgi_param  CONTENT_LENGTH   $content_length;
        }
    }

=== nginx.conf ===

Буду очень признателен за любые подсказки.

--
Best,
        Yaroslav Tarasenko aka Taras Tswiah




 




Copyright © Lexa Software, 1996-2009.