SlideShare a Scribd company logo
1 of 42
Download to read offline
Оптимизация сервера
потокового видеовещания

              Дмитрий Шатров
Мой Мир@Mail.Ru
      трансляции
      видеочат




  http://momentvideo.org
Трансляции@mail.ru
В поисковой выдаче
Сервис трансляций
Сервис трансляций
Потоковое видео

Трансляции
Конференции
Видеочат
              ...и не только
Организация сервиса

Центральный сервер
Мультикаст
P2P
Центральный сервер



        сервер
Мультикаст



    сервер
P2P

сервер
Центральный сервер



                      сервер




Основа видеосервиса
Сервер видеочата
2 тыс. одновременно подключенных клиентов

Два видеопотока ~250 Кбит/сек на клиента

Горизонтальное масштабирование

3 независимых сервера, ~350 Мбит/сек на
сервер, загрузка CPU не больше 25%
Сервер трансляций
5 тыс. одновременно подключенных клиентов

Один видеопоток 200-500 Кбит/сек на клиента

Кластер из трёх раздающих серверов и одного
арбитра

Очень неравномерная нагрузка на серверы
Характер нагрузки
Нагрузка быстро скачет с одного сервера на
другой.

Трансляций с кол-вом зрителей >100 обычно
не больше 10 штук.

Нужно разносить популярные трансляции по
нескольким серверам.
Шторм подключений
Рестарт сервера — реконнект всех клиентов.

Moment отлично справляется с толпой
клиентов, пришедших одновременно.

Реконнект работает хорошо, на это можно
рассчитывать при перебалансировке.
1   ∞
Видеосервер
                                      RTMP
                отдельные сообщения

видеопоток




                 Бизнес-
                 логика
API
Клиент подключился

Клиент отключился

Запрос на просмотр

Запрос на вещание

       RPC
Протокол RTMP
Нужен для взаимодействия с Flash

2 уровня: chunk stream и message stream

поддержка RPC

RTMPT — RTMP поверх HTTP

Переусложнён, спецификация неточна
Реализация RTMP
~1,5 месяца работы одного разработчика

    изучение протокола
    реализация
    отладка
    оптимизация

                                + RTMPT
Принцип работы




event-машина на неблокирующихся сокетах
Получение данных
Отправка данных
Оптимизация
Стараемся максимально эффективно
использовать примитивы, предлагаемые ядром.

Минимизируем количество системных вызовов
для отправки данных.

Хотим ускориться в несколько раз.
Немедленная отправка
При отправке сообщение либо уходит целиком,
либо мы заключаем, что клиент медленный и
начинаем отбрасывать сообщения.

В результате writev работает только в рамках
одного сообщения.
Отложенная отправка
За одну операцию чтения в приёмный буфер
может быть считано сразу несколько
сообщений.

Откладываем отправку данных до конца
итерации цикла обработки сообщений.

Отправляем все считанные за итерацию
данные одним writev.
В конце итерации
mwritev
Простой модуль ядра: /dev/mwritev

Принимает массив наборов параметров для
вызовов writev

Вызывает vfs_writev для каждого набора
параметров

Возвращает массив результатов
mwritev
-15% нагрузки на CPU

Это немного. Значит, контекстные
переключения относительно недороги.

Дальнейшая оптимизация снижает эффект от
использования mwritev.
Группировка сообщений
Равномерный видеопоток => интервалы между
сообщениями препятствуют группировке.

Тестовый модуль Moment — mod_test.
Генерирует поток сообщений.

rtmptool — имитирует N одновременных
подключений.
Группировка сообщений

burst = 3 => производительность x 2.5


Группировать сообщения очень выгодно.
Группировка сообщений
Задерживаем помещение клиента в очередь
отложенной отправки, если в очереди только
аудио и видео сообщения, и с момента
последней отправки прошло меньше M
миллисекунд.

Т.е. буферизуем поток на сервере, вводим
искуственную задержку.
Эффект от группировки
Видео ~560 Кбит/сек
Pentium 4, 2.8 ГГц (low-end сервер)

задержка 0 мс — 1400 клиентов

задержка 100 мс — 3500 клиентов

задержка 500 мс — 5000 клиентов
Эксперимент
Добиваемся 100%-й загрузки CPU и
продолжаем увеличивать кол-во подключений.

Видимого ухудшения качества видео при
просмотре не происходит. Немного растёт
задержка (но не превышает 1 сек).

Первые пропуски видео/звука — на 6000
клиентов.
?
CPU — 100%
Саморазгон сервера
CPU 100% => следующая итерация цикла
обработки сообщений начнётся позже.

На следующей итерации будет доступно
больше данных от источника видео.

В конце итерации мы отправим больше
данных. Т.е размер отправляемой за раз
порции данных вырастет.
Саморазгон сервера
Чем больше размер блока данных при
отправке, тем выше производительность
сервера.

Получаем эквивалент динамического
увеличения задержки при отправке в
зависимости от нагрузки на сервер.

Порог в 6000 клиентов согласуется с
эффектом от явной буферизации.
Многопоточность
В Moment:

    Отдельная блокировка на каждый крупный
    объект (мьютекс)

    Подсчёт ссылок

    - 25% производительности даже с одним
    потоком
Многопоточность
Сложно писать

Сложно отлаживать

Сервер медленнее

Но есть свои плюсы
Итог
Архитектура «боевого» видеосервера.

3 тыс. клиентов с одного ядра на low-end
системе (500 Кбит/сек на клиента).

До 6 тыс. клиентов на пике при умеренном
увеличении задержки.
http://momentvideo.org

Реализованы все описанные оптимизации.

Умеет всё, что нужно для таких сервисов, как
трансляции, видеочат и им подобные.

Захват видео с камер, видеонаблюдение, запись.

Открытый код. API для плагинов.

More Related Content

What's hot

Асинхронная обработка данных: RabbitMQ, Comet
Асинхронная обработка данных: RabbitMQ, CometАсинхронная обработка данных: RabbitMQ, Comet
Асинхронная обработка данных: RabbitMQ, CometАндрей Федоровский
 
2021.11.10 Dots Platform. Serverless. Vapor
2021.11.10 Dots Platform. Serverless. Vapor2021.11.10 Dots Platform. Serverless. Vapor
2021.11.10 Dots Platform. Serverless. VaporYehor Herasymchuk
 
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложенияИспользование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложенияphpdevby
 
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)Ontico
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Ontico
 
Трансформация управления данными в средах DevTest
Трансформация управления данными в средах DevTestТрансформация управления данными в средах DevTest
Трансформация управления данными в средах DevTestSergii Stukan
 
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Ontico
 
DWR @ DevClub.eu
DWR @ DevClub.euDWR @ DevClub.eu
DWR @ DevClub.euarsenikum
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeYehor Herasymchuk
 
Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...Ontico
 
Курс высокие нагрузки: сеть (отрывок)
Курс высокие нагрузки: сеть (отрывок)Курс высокие нагрузки: сеть (отрывок)
Курс высокие нагрузки: сеть (отрывок)Andrey Smirnov
 
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...Yehor Herasymchuk
 
Юрий Василевский — Сервис пуш-сообщений Яндекса
Юрий Василевский — Сервис пуш-сообщений ЯндексаЮрий Василевский — Сервис пуш-сообщений Яндекса
Юрий Василевский — Сервис пуш-сообщений ЯндексаYandex
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Ontico
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Ontico
 
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...Ontico
 
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Ontico
 
Tuning Azure Service Bus (RU)
Tuning Azure Service Bus (RU)Tuning Azure Service Bus (RU)
Tuning Azure Service Bus (RU)Pavel Sokolov
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Ontico
 

What's hot (19)

Асинхронная обработка данных: RabbitMQ, Comet
Асинхронная обработка данных: RabbitMQ, CometАсинхронная обработка данных: RabbitMQ, Comet
Асинхронная обработка данных: RabbitMQ, Comet
 
2021.11.10 Dots Platform. Serverless. Vapor
2021.11.10 Dots Platform. Serverless. Vapor2021.11.10 Dots Platform. Serverless. Vapor
2021.11.10 Dots Platform. Serverless. Vapor
 
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложенияИспользование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
 
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
Трансформация управления данными в средах DevTest
Трансформация управления данными в средах DevTestТрансформация управления данными в средах DevTest
Трансформация управления данными в средах DevTest
 
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
 
DWR @ DevClub.eu
DWR @ DevClub.euDWR @ DevClub.eu
DWR @ DevClub.eu
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...
 
Курс высокие нагрузки: сеть (отрывок)
Курс высокие нагрузки: сеть (отрывок)Курс высокие нагрузки: сеть (отрывок)
Курс высокие нагрузки: сеть (отрывок)
 
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
 
Юрий Василевский — Сервис пуш-сообщений Яндекса
Юрий Василевский — Сервис пуш-сообщений ЯндексаЮрий Василевский — Сервис пуш-сообщений Яндекса
Юрий Василевский — Сервис пуш-сообщений Яндекса
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
 
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
 
Tuning Azure Service Bus (RU)
Tuning Azure Service Bus (RU)Tuning Azure Service Bus (RU)
Tuning Azure Service Bus (RU)
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
 

Viewers also liked

14 2 tangents to a circle lesson
14 2 tangents to a circle lesson14 2 tangents to a circle lesson
14 2 tangents to a circle lessongwilson8786
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Ontico
 
Data log service promotion
Data log service promotionData log service promotion
Data log service promotionAhmad Kaheela
 
Calltoactiontosupportbreastfeeding
CalltoactiontosupportbreastfeedingCalltoactiontosupportbreastfeeding
CalltoactiontosupportbreastfeedingJennifer Zapata
 
Millennials in the Workplace copy
Millennials in the Workplace copyMillennials in the Workplace copy
Millennials in the Workplace copyD'Shai Hendricks
 
Find the right path: improving career prospects for non-graduates
Find the right path: improving career prospects for non-graduatesFind the right path: improving career prospects for non-graduates
Find the right path: improving career prospects for non-graduatesResolutionFoundation
 
Feedbackstr General Presentation & Portfolio
Feedbackstr General Presentation & PortfolioFeedbackstr General Presentation & Portfolio
Feedbackstr General Presentation & PortfolioFeedbackstr
 
Жизнь ахыска-турок на юге России
Жизнь ахыска-турок на юге РоссииЖизнь ахыска-турок на юге России
Жизнь ахыска-турок на юге РоссииVadim Karastelev
 
«Видимая» и «невидимая» ответственность: обсуждение книги Х. Арендт «Банальн...
 «Видимая» и «невидимая» ответственность: обсуждение книги Х. Арендт «Банальн... «Видимая» и «невидимая» ответственность: обсуждение книги Х. Арендт «Банальн...
«Видимая» и «невидимая» ответственность: обсуждение книги Х. Арендт «Банальн...Vadim Karastelev
 

Viewers also liked (20)

14 2 tangents to a circle lesson
14 2 tangents to a circle lesson14 2 tangents to a circle lesson
14 2 tangents to a circle lesson
 
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
Address Sanitizer или как сделать программы на c/с++ надежнее и безопаснее (К...
 
Data log service promotion
Data log service promotionData log service promotion
Data log service promotion
 
Time Management for New Members
Time Management for New MembersTime Management for New Members
Time Management for New Members
 
Multilateral Newsletter Aug-Sep 2015
Multilateral Newsletter Aug-Sep 2015Multilateral Newsletter Aug-Sep 2015
Multilateral Newsletter Aug-Sep 2015
 
Calltoactiontosupportbreastfeeding
CalltoactiontosupportbreastfeedingCalltoactiontosupportbreastfeeding
Calltoactiontosupportbreastfeeding
 
Sejarah Internet #1
Sejarah Internet #1Sejarah Internet #1
Sejarah Internet #1
 
curatemeppt
curatemepptcuratemeppt
curatemeppt
 
Millennials in the Workplace copy
Millennials in the Workplace copyMillennials in the Workplace copy
Millennials in the Workplace copy
 
Economy Matters September- October 2014
Economy Matters September- October 2014 Economy Matters September- October 2014
Economy Matters September- October 2014
 
Instalasi OpenGL – GLUT
Instalasi OpenGL – GLUTInstalasi OpenGL – GLUT
Instalasi OpenGL – GLUT
 
Find the right path: improving career prospects for non-graduates
Find the right path: improving career prospects for non-graduatesFind the right path: improving career prospects for non-graduates
Find the right path: improving career prospects for non-graduates
 
Multilateral Newsletter - March 2016
Multilateral Newsletter - March 2016Multilateral Newsletter - March 2016
Multilateral Newsletter - March 2016
 
Cii-PwC Cloud Summit Report 2016
Cii-PwC Cloud Summit Report 2016Cii-PwC Cloud Summit Report 2016
Cii-PwC Cloud Summit Report 2016
 
Feedbackstr General Presentation & Portfolio
Feedbackstr General Presentation & PortfolioFeedbackstr General Presentation & Portfolio
Feedbackstr General Presentation & Portfolio
 
Avantguardisme
AvantguardismeAvantguardisme
Avantguardisme
 
Жизнь ахыска-турок на юге России
Жизнь ахыска-турок на юге РоссииЖизнь ахыска-турок на юге России
Жизнь ахыска-турок на юге России
 
Cmmaao pvt-ltd-pmi
Cmmaao pvt-ltd-pmiCmmaao pvt-ltd-pmi
Cmmaao pvt-ltd-pmi
 
«Видимая» и «невидимая» ответственность: обсуждение книги Х. Арендт «Банальн...
 «Видимая» и «невидимая» ответственность: обсуждение книги Х. Арендт «Банальн... «Видимая» и «невидимая» ответственность: обсуждение книги Х. Арендт «Банальн...
«Видимая» и «невидимая» ответственность: обсуждение книги Х. Арендт «Банальн...
 
Prodental
ProdentalProdental
Prodental
 

Similar to Оптимизация сервера потокового видеовещания (Дмитрий Шатров)

SignalR
SignalRSignalR
SignalRmstDe3
 
Magento performance
Magento performanceMagento performance
Magento performanceaheadWorks
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted PythonHighLoad2009
 
Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых ...
Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых ...Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых ...
Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых ...Media Gorod
 
Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Cisco Russia
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Ontico
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonAndrey Smirnov
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...Sergey Xek
 
Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Ла...
Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Ла...Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Ла...
Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Ла...Ontico
 
Надежность World of Tanks Server
Надежность World of Tanks ServerНадежность World of Tanks Server
Надежность World of Tanks ServerLevon Avakyan
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Cisco Russia
 
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)Ontico
 
Репликация базы данных CUCM
Репликация базы данных CUCMРепликация базы данных CUCM
Репликация базы данных CUCMCisco Russia
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...ForkConf
 

Similar to Оптимизация сервера потокового видеовещания (Дмитрий Шатров) (20)

SignalR
SignalRSignalR
SignalR
 
pyFMS
pyFMSpyFMS
pyFMS
 
pyFMS
pyFMSpyFMS
pyFMS
 
Magento performance
Magento performanceMagento performance
Magento performance
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted Python
 
Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых ...
Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых ...Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых ...
Сервер Flash-вещаний (RTMP) на Python или создание высоконагруженных сетевых ...
 
Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
 
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в PythonTwisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
 
Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Ла...
Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Ла...Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Ла...
Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Ла...
 
Надежность World of Tanks Server
Надежность World of Tanks ServerНадежность World of Tanks Server
Надежность World of Tanks Server
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
 
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)
Протоколы уровня приложения в браузере, Илья Кутуков (Parallels)
 
Репликация базы данных CUCM
Репликация базы данных CUCMРепликация базы данных CUCM
Репликация базы данных CUCM
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
(1 часть) 1С-Битрикс. Как настроить двухуровневую конфигурацию веб-приложения...
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Оптимизация сервера потокового видеовещания (Дмитрий Шатров)