nginx+mp4 streaming

d1s4bler nginx-forum на nginx.us
Пт Апр 29 11:10:46 MSD 2011


Здраствуйте!
1)Очень интересует связка nginx+mp4. Сервак
служит только для стриминга видео
контента. Размер видео файлов
колеблется в пределах 30-250 Мб. С
"мелкими" файлами проблем как правило
нету - даже при большом трафике
начинают играть быстро, перемотка тоже
быстрая, а вот с большими файлами дела
обстоят похуже... 
Посоветуйте пожалуйста какие
настройки может потюнить, чтобы
добиться большей производительности и
в каких пределах стоит ставить эти
настройки?

Система:
Fedora release 14 x64
Linux  2.6.35.10-74.fc14.x86_64
RAM: 16G

Текущий конфиг:

worker_processes  8;
worker_priority  -5;
error_log  logs/error.log;
pid        nginx.pid;
events {
    worker_connections  16384;
    use   epoll;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    keepalive_requests  128;
    keepalive_timeout    10;
    send_timeout             5;
    open_file_cache          max=10000  inactive=30s;
    open_file_cache_valid    30s;
    open_file_cache_min_uses 2;
    sendfile                  off;
    aio                          on;
    output_buffers       2       256k;
    tcp_nopush           on;
    tcp_nodelay          on;
    limit_rate_after    1m;
    limit_rate              80k;
    server {
        listen       80 sndbuf=256k;
        server_name     "server_name";
        root         "root"
        location ~* \.mp4$ {
              mp4;
        }
    }
}

2)Так же интересует вопрос
одновременного использования aio и sendfile.
Если установить оба значения в On , то "на
глаз" видео грузится быстрее... Или при
включении "aio  on" sendfile автоматом
ставится в off? 
3)Есть ли смысл в использовании опции
read_ahead для стриминга? Пробовал
подключать её - результат был
отрицательный, но я использовал
значения 64-512k для опции, может они
слишком большие? С числом worker'ов также
экспериментировал - при большом
трафике число воркеров > 8 увеличивает LA
до 10... При 8 воркерах  - LA ~ 2-3.
4)Ещё не могли бы подробней объяснить
директиву output_buffers. Почитав mailing list
нашёл, что директива не используется
при использовании sendfile  - тут опять
встаёт вопрос будет ли она
использоваться, если aio и sendfile
одновременно установить в значение On.
Директива состоит из двух значений, т.е.
output_buffers X Y - Y это размер буфера, а что
такое X? Общее число?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,194405,194405#msg-194405




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