Я пытаюсь измерить производительность своего видеосервера HLS. На данный момент мой сервер довольно наивный: просто файловый сервер NGINX. (HLS доставляет видео по HTTP, разделяя его на файлы, называемые фрагментами.) Каждый файл имеет размер ~ 256 КБ, и мне нужно загружать файл каждые 2 секунды. Это 1 мбит / с.
У меня есть довольно приличная ссылка на Интернет с моего сервера AWS. Прошил минимум 2 Гбит / с.
Однако, когда я тестирую потоковую передачу для трансатлантических соединений с задержкой ~ 150 мс, я получаю очень низкую пропускную способность. Думаю, это можно отнести к окнам RTT и TCP. Моя основная проблема в том, что пропускная способность на одно соединение ниже 1 Мбит / с, что является желаемым качеством воспроизведения моего видео.
В настоящий момент я не хочу вкладывать средства в развертывание мультисайтов или CDN, поскольку у меня не так много клиентов, играющих видео.
Я просто хотел бы, чтобы мои клиенты имели пропускную способность, достаточную для воспроизведения видео. (Моими клиентами будут ПК, Android и iPhone).
Мне это кажется достаточно распространенной проблемой. Что здесь делают другие? CDN - моя единственная надежда? У меня не так много одновременных клиентов, поэтому CDN кажутся мне излишними.
Вы можете установить его столько, сколько захотите. Вы должны установить его на произведение задержки полосы пропускания вашей ссылки.
ПРОЧИТАЙТЕ свои комментарии к этому вопросу на SO: клиенты вообще не «используют» ваш буфер отправки. Они понятия не имеют, насколько оно велико, и нет смысла, в котором они «терпят» большой. Заявление - ерунда.
Провел еще несколько исследований. Кажется, что для файлов среднего размера, файлы, которые передаются не меньше и не больше нескольких секунд. Для TCP начальное окно перегрузки более важно, чем окно перегрузки. В ubuntu вы можете изменить initcwnd стоимость. Значение по умолчанию - 10. Я смог увеличить производительность моих файлов на 30%, увеличив ее до 25. Посмотрите здесь: http://www.cdnplanet.com/blog/initcwnd-settings-major-cdn-providers/