Потенциальные и реальные клиенты всегда спрашивают меня: сколько потоков я могу запустить одновременно?

Я всегда объясняю, что теоретически это maxServerUpstreamBandwidth / (streamDownstreamBandwidth * numberOfStreams) . На самом деле, это, вероятно, будет меньше.

Однако в реальных сценариях все выглядит иначе; мы, кажется, получаем больше клиентов, чем теоретически возможно.

Например, если у меня есть поток 1 мегабит в секунду, опубликованный на сервере со строкой 100 мегабит в секунду, теоретически я должен иметь возможность 100 клиентов смотреть этот поток со скоростью 1 мегабит в секунду каждый. Это безумие, 1 сервер обслуживает только 100 клиентов!?!? Таким образом, я пришел к выводу, что я должен делать математику неправильно.

Что мне здесь не хватает?

3 ответа3

1

Я вижу три фактора, которые позволят вам передавать больше потоков, чем ваше теоретическое число:

  1. Потоковых данных меньше, чем вы думаете. Поток обычно состоит из сжатых данных, и некоторые данные сжимаются больше, чем другие. Поэтому, когда вы говорите, что это поток в 1 мегабит, это может быть связано со сжатием в худшем случае (или, может быть, ваш номер в 1 мегабит несжатый?). Это, естественно, будет прерывистым, так как поток данных изменяется со временем, степень сжатия будет меняться. Другие факторы, такие как приостановленные потоки, также могут снизить фактическую скорость.
  2. Клиенты имеют узкие места. Даже если ваш сервер имеет 100-мегабитную линию, у клиента может быть медленное интернет-соединение (например, совместно используемое соединение Wi-Fi в кафе).
  3. Протокол автоматического дросселирования. Я не знаю о вашей настройке, но многие потоковые протоколы автоматически регулируют скорость потока, когда пропускная способность ограничена. Таким образом, (используя ваш пример), даже если вы можете обрабатывать только 100 потоков на 1 мегабит, система может обрабатывать больше клиентов, поскольку она автоматически падает до 0,5 мегабита, когда подключено 20 клиентов.

Этот ответ не поможет вам с вашей математикой (здесь нет точных цифр!), Но он может быть боеприпасом при описании ситуации для ваших клиентов.

0

Кажется глупым думать, что все все время идут в максимальном темпе, и если другой пользователь хочет открыть поток, сервер не разрешит этого. Это просто замедляет всех, создавая новую пропускную способность.

0

Вы также имеете дело с служебными и другими конкурирующими протоколами и потоками в том же канале.

В вашем теоретическом примере вы имеете дело с идеальной средой, в которой больше нет запросов, использующих этот канал 100 Мбит / с вообще. На практике вы никогда не испытаете этого. Это соединение со скоростью 100 Мбит / с поддерживает все возможные протоколы между сотнями клиентских компьютеров.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .