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