Высокая нагрузка на erlang приложения erlyvideo на гигабитном...
TRANSCRIPT
![Page 2: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/2.jpg)
Эрливидео
• Потоковое видео
• : MPEG-TS, RTMP, …Разные протоколы
• Высокая эффективность
![Page 3: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/3.jpg)
Разные нагрузки
• : , Тысячи пар один источник одинклиент
• , Один источник тысячи клиентов
![Page 4: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/4.jpg)
Видео
• : 50 / , 500 /Один поток кадров сек КБит с
• 2000 — 100 000 / .клиентов кадров сек
• 1 /Суммарно ГБит с
![Page 5: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/5.jpg)
RTMP
• У каждого клиента своё
• Каждому клиенту своя копия потока
• , Данные общие заголовки разные
![Page 6: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/6.jpg)
RTMP
• — Скорости не хватает клиентзалипает
• — Ошибка в тайстемпе клиентзалипает
• — - Клиент залипает надо что тоделать
![Page 7: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/7.jpg)
Рост эрливидео
• 800 Начались проблемы на клиентах
• Неверная архитектура
• Пришлось профилировать
![Page 8: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/8.jpg)
Профилирование
• — Девелопмент одно продакшндругое
• Разные версии клиентов
• Разные скорости каналов
• Разные задержки на каналах
![Page 9: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/9.jpg)
Профилирование
• Профилирование на продакшне
• Не отключая пользователей
• Без деградации системы
![Page 10: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/10.jpg)
Инструменты
• Valgrind и профилировщики тормозятсистему
• gdb вносит искажения в код
![Page 11: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/11.jpg)
Инструменты
• Erlang предлагает другие подходы кпрофилированию
![Page 12: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/12.jpg)
Erlang
• Данные и потоки выполнения, объединены как процессы ОС
• Обмен асинхронными сообщениями
• Message box у каждого процесса
![Page 13: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/13.jpg)
Erlang
• Все данные немутабельные
• — , Процесс рекурсивная функция вызывающая себя с новым значением
![Page 14: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/14.jpg)
Erlang
• Один процесс под каждого клиента
• « »Один процесс под каждый объект
• Вызовы методов строгопоследовательны
![Page 15: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/15.jpg)
Lowload
• -« » Процесс поток шлет сообщения-« »процессам клиентам
• RTMP Клиенты упаковывают сами
• FPS*N в системе сообщений
![Page 16: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/16.jpg)
Тормоза
• « » « »Начинаются лаги и залипание
• ? ?Куда смотреть Что мерять
![Page 17: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/17.jpg)
Мониторинг
• Меряем очереди сообщений
• erlang:process_info(Pid,message_queue_len)
![Page 18: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/18.jpg)
Мониторинг
• CPUМеряем загрузку
• etop:start()
• мониторим общую память процессов
![Page 19: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/19.jpg)
Узкие места
• В узких местах накапливаютсясообщения
• CPU, Растет потребляемый процессом
• Накапливается память
![Page 20: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/20.jpg)
Узкие места
• Процессу не хватает одного ядра
• Недообрабатывает сообщения
• Накапливается память
• Встают в ожидании клиентскиепроцессы
![Page 21: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/21.jpg)
?Как боролись
• Уменьшили количество сообщений
• Прямая запись в сокет
• Распараллелили запись в сокеты поядрам
![Page 22: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/22.jpg)
Результат
• Во много раз увеличили количество одновременных клиентов
![Page 23: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/23.jpg)
Рекомендации
• Планировать количество проходящихсообщений
• Уменьшать работу внутри вызываемого процесса
• — Раскладывать работу по процессам расползутся по ядрам
![Page 24: Высокая нагрузка на Erlang приложения erlyvideo на гигабитном канале (Макс Лапшин)](https://reader034.vdocuments.pub/reader034/viewer/2022052223/5594ab801a28ab920e8b45f8/html5/thumbnails/24.jpg)
Выводы
• erlang Профилировка приложений на возможен без деградации качества
обслуживания
• Методы поиска проблем несложны иэффективны