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