Re[4]: nginx для отдачи больших файлов

Lin shaman712 at inbox.ru
Tue Feb 24 18:57:15 MSK 2009


Дописал Location для files. Но со скоростью продолжает твориться что-то непонятное.
Поначалу вроде бы все работает нормально, но через пару часов скорость отдачи файлов резко падает.
Как можно посмотреть, сколько сессий на данный момент обрабатывает nginx? чтобы хотя бы примерно представлять нагрузку. в nginx есть что-нибудь типа /server-status/ для apache?

И еще один вопрос. Для nginx есть разница 32 или 64-битной является система? такое чувство, что на 64-битной он работает хуже.

> А для files location'a нету. Он все равно проксирует на апач. Нужно дописать
> что-то типа
> location /files {
>     internal;
>     root корневая_папка;
> }
> 
> 23 февраля 2009 г. 21:08 пользователь shaman <shaman712 at inbox.ru> написал:
> 
> > Здравствуйте.
> >
> > Файл отдается так: сначала идет обращение к скрипту, который делает
> > все необходимые проверки и потом выдает такое:
> >
> >    header('Content-Type: application/octet-stream');
> >    header('Content-Disposition: attachment; filename="'.$filename . '";');
> >    header("X-Accel-Redirect: /files/" . $filename);
> >
> > Т.е. выполняется редирект на nginx, который и отдает файл. Я, надеюсь,
> > правильно делаю? :)
> >
> > > Судя по конфигурационному файлу, вы все запросы прокачиваете через апач?
> > А напрямую отдавать
> > > самим        nginx`ом       эти       самый       файлы       например
> > > http://blog.kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/ ?
> >
> > >> Система FreeBSD 7, 4 Гб RAM.
> > >> nginx нужно использовать для отправки файлов самого разного размера: от
> > 2-3 кб до 2-3 гб.
> > >> Пытался подобрать оптимальный конфиг, но не очень получается.
> > >> Вот, что у меня на данный момент:
> >
> >
> > >> user www www;
> > >> worker_processes 1;
> >
> > >> worker_rlimit_nofile 10240;
> > >> worker_rlimit_sigpending 32768;
> > >> worker_priority 5;
> >
> > >> error_log /.../nginx_error_log info;
> >
> > >> events {
> > >>     worker_connections  20480;
> > >>     use kqueue;
> > >> }
> >
> > >> http {
> > >>     default_type    application/octet-stream;
> >
> > >>     log_format main
> > >>         '$remote_addr - $remote_user [$time_local] '
> > >>             '"$request" $status $bytes_sent '
> > >>         '"$http_referer" "$http_user_agent" '
> > >>         '"$gzip_ratio"';
> >
> >
> >
> > >> access_log /.../nginx_access_log main;
> >
> >
> >
> >
> > >>     client_header_timeout  60;
> > >>     client_body_timeout    60;
> > >>     send_timeout           120;
> > >>     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;
> >
> > >>     gzip on;
> > >>     gzip_min_length  10240;
> > >>     gzip_buffers     32 64k;
> > >>     gzip_types       text/html application/x-javascript text/css
> > text/xml
> > >> text/plain;
> >
> > >>     client_header_buffer_size    4k;
> > >>     client_max_body_size 120000000;
> > >>     large_client_header_buffers  16 8k;
> >
> > >>     sendfile       on;
> > >>     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  20;
> > >>     optimize_server_names on;
> >
> > >>     index index.html;
> >
> > >>     server {
> > >>         listen       ххх.ххх.ххх.ххх:80;
> > >>         server_name  ххх;
> > >>         location / {
> >
> > >>             proxy_pass         http://127.0.0.1:81/;
> > >>             proxy_redirect     off;
> > >>             proxy_set_header   Host             $host;
> > >>             proxy_set_header   X-Real-IP        $remote_addr;
> > >>         }
> > >>     }
> > >> }
> >
> >
> > >> Но проблемы следующие:
> > >> - большие паузы перед отдачей файла (сразу после старта сервера
> > >> отдает сразу же, через некоторое время начинаются приличные паузы).
> > >> - непонятная скорость отдачи файлов. файлы отдаются рывками,
> > >> скорость иногда запредельно низкая (10-15 Кб/с, когда нормальная 300-500
> > Кб/с).
> >
> > >> Какие настройки нужно менять и где крутить?
> > >> Спасибо!
> >






More information about the nginx-ru mailing list