nginx+mp4 streaming

d1s4bler на gmail.com d1s4bler на gmail.com
Ср Май 4 17:45:59 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? Общее число?

5)Насколько велика разница в модулях для mp4 стриминга? Пробовал оба:
а) http://wiki.nginx.org/MP4StreamingLite
б) http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Nginx-Version2
ощутимой разницы не заметил... Есть ли выйгрышь в производительности, 
если использовать "лёгкую" версию? (MP4StreamingLite)

Я уже создавал тему в mailling list'e, если удобней будет там писать: 
http://forum.nginx.org/read.php?21,194405




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