mp4 streaming tuning

Oleg Palij o.palij at dp.uz.gov.ua
Sun Dec 16 20:07:19 UTC 2012


Добрый день!

nginx/1.2.3 стримит видео, упираемся в 1.5 Гб/c (две 1Гб сетевухи в bond) и nginx начинает с задержкой в начале (несколько секунд, иногда до минуты) отдавать файлы, при этом iowait 20-30%, si ~ 20%.
Популярные файлы лежат на ssd, остальное на hdd.
В основном видео по 100-200Мб, часть файлов отдается 206ми максимум по 1Мб.
По дискам затыка вроде нет, т.к. в пики `dd if=file.mp4` начинает показывать содержимое файлов практически сразу.

worker_processes 4;
events {
   worker_connections 1024;
   use epoll;
}

http {
   sendfile on;
   tcp_nopush on;
   tcp_nodelay on;
}

server {
   location /video/ {
      root /;
      try_files /mnt/ssd$uri /mnt/hdd$uri;
      mp4;
      open_file_cache off;
      limit_rate_after 3m;
      limit_rate 80k;
   }
}

На сервере 4 физических процессора, имеет смысл поднимать кол-во worker_processes?

Имеет-ли смысл включать AIO? linux 2.6.38 SMP x86_64

видел, что Игорь давал такой пример (http://forum.nginx.org/read.php?2,22085,216640):
> output_buffers 2 1m;
> aio on;
> directio 1m;
Что в этом случае будет происходить с 206ми меньшими 1Мб? Чтение будет блокирующимся и на это можно забить? Или надо все таки ставить directio 512?

Еще Игорь писал, что:
> На 16G можно обслуживать где-то до 6000 соединений.
С чем это связано и можно-ли на это как-то повлиять? Хотя у нас сейчас около 3000 established, просто на будущее интересно.

Или может упираемся в сетевухи? Cетевые прерывания распределены по ядрам равномерно. И когда стояла одна сетевуха - она на 1Гб стримила нормально.
00:19.0 Ethernet controller: Intel Corporation 82578DM Gigabit Network Connection (rev 05)
04:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection

В какую сторону еще стоит посмотреть?

Заранее спасибо.


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