€
$
₴
₽
EN
RU
Vmeste.EU
Лента
Каталог
Файлы
Форумы
Услуги
Основное
Radiotalk
Пользовательское
MyRadio24 - Хостинг для создания интернет радио
91 •
Посмотреть все темы
НОВЫЙ СЕРВЕР ВЕЩАНИЯ - замена ICECAST2
1
20090
Dimitry
@Dimitry
17.01.2020
НОВЫЙ СЕРВЕР ВЕЩАНИЯ (замена ICECAST2)
Возможно вы заметили что последнее время не так много нововведений.
Всё потому, что мы решили разработать свой собственный СЕРВЕР трансляций вместо использования IceCast2.
Базовая реализация IceCast2 больше не удовлетворяет требованиям нашему функционалу, а добавлять новые функции в него - проблематично. Так как ранее мы разработали свой собственный Auto-DJ разобрав все протоколы IceCast2 и MP3 вещания, разработка сервера показалась физически возможной. После 3х месяцев работы у нас появилась
первая рабочая версия сервера с базовым функционалом
- пришло время тестирования. Вводить в использование новый сервер мы будем очень осторожно и постепенно, на начальном этапе возможны проблемы с вещанием которые мы быстро исправим. Сначала мы запустим LIVE сервер вещания, а потом заменим все сервера со слушателями.
Что изменится с приходом нового сервера:
- обработка неверной кодировки метаданных LIVE вещания теперь ещё лучше (автоматизировано)
- стабильность LIVE вещания станет лучше, при проблемах с трафиком DJ не будет отключен сразу
- мгновенное определение LIVE вещания и переключение LIVE <=> Auto-DJ
- без проблем с радиобосс: неопытные DJ ставят вещание в радиобосс на паузу, тогда сервер начинает отключать диджея каждые 10 секунд (исправлено)
- больше не нужно будет настраивать отдельный сервер статистики в SAM BROADCASTER И RADIOBOSS, статистику выдаст наш сервер по умолчанию
- имя вещающего DJ теперь будет строго браться из раздела Пользователи, рекомендуется каждому диджею зарегистрироваться (теперь это возможно), соответственно и статистика будет у каждого DJ пользователя своя личная
- улучшенный сбор статистики, оперативнее и больше данных
- адаптивное перенаправление слушателей на другие сервера и проксирование потоков откроет возможность масштабировать 1 радио на более 10000 слушателей одновременно
- улучшенная адаптивная буферизация потока (небольшая задержка)
Этапы тестирования или как не поймать проблем
1.
OK
Наше тестирование вещания и прослушивания с разных программ
2.
OK
Автоматизированное тестирование нагрузки от более 1000 LIVE вещаний и 10000 слушателей
3.
OK
Пользовательское тестирование вещания и прослушивания с разных программ/устройств
4.
OK
Частичная параллельная интеграция - как вторичный LIVE сервер
5.
OK
Попытка запуска и замена старого IceCast2 на наш новый сервер
6.
OK
Запуск первого транслирующего сервера для слушателей
7.
OK
Отладка ошибок и оптимизация работы вещающего сервера под нагрузкой
8.
OK
Замена всех Icecast2 серверов вещания на наши собственные - стабильные сервера!
9.
OK
Отладка ошибок и оптимизация работы сервера для LIVE вещания под нагрузкой
На данный момент сервер работает стабильно и все ошибки исправлены.
Тема открыта для обсуждения, необходимо ваше мнение по данной разработке.
20090
Dimitry
@Dimitry
18.01.2020
Сегодня проведена эмуляция нагрузки от слушателей на сервер
При тестировании использовалось
1 радио
которое вещало в
MP3 формате 192kbit
. При тестировании использовался локальный скрипт который совершает много одновременных HTTP подключения и скачивает поток. При всех тестах лагов в звучании не обнаружено, однако при последнем тесте
10000
слушателей, подключение к серверу длилось вместо 1 секунды почти 2 секунды. Память с увеличением слушателей увеличивалась и не освобождалась, но если отключить слушателей и подключить заново, то она стабилизировалась. Нагрузка на процессор примерно в 2 раза меньше чем от сервера IceCast2, но условия работы не равные.
Результаты тестирования при MP3 формате 192kbit
listen_stream: 100
CPU: 0.3 - 0.7%,
MEM: 54 MB
listen_stream: 500
CPU: 2.7 - 3.3%,
MEM: 50 MB
listen_stream: 1000
CPU: 6.0 - 6.7%,
MEM: 55 MB
listen_stream: 2000
CPU: 10.0 - 12%,
MEM: 190 MB
listen_stream: 3000
CPU: 16 - 18%,
MEM: 310 MB
listen_stream: 5000
CPU: 28 - 30%,
MEM: 320 MB
listen_stream: 7000
CPU: 40 - 42%,
MEM: 335 MB
Network: 1300mbit
listen_stream: 10000
CPU: 59 - 65%,
MEM: 424 MB
Network: 1800mbit
При
128kbit
вещании:
listen_stream: 10000
CPU: 55 - 57%,
MEM: 514 MB
Network: 1300mbit
От слушателей нагрузка не очень высокая.
Тестируем нагрузку от большого кол-ва вещающих станций.
------------------------------------------------------------------
500 станций вещающих в разных форматах
CPU: 6%
Проблемы не выявлены.
1000 станций
CPU: 12%
Некоторые станции начинают отключаться.
Причина пока не выявлена. (не критично)
Данные по вещанию не точные, требуется больше тестирования разными способами.
Важная особенность. Если вещающий передаёт много мелких пакетов, то нагрузка значительно увеличивается. (ffmpeg)
20090
Dimitry
@Dimitry
17.03.2020
Запуск первого сервера версия 1.0
Несколько дней назад был запущен наш первый сервер
listen5
в работу для новых клиентов. В реальных условиях нагрузка на процессор всё таки выше, примерно как у icecast, расход памяти остался таким же как и был при тестах выше.
Сегодня:
1500
слушателей 192kbps и
30
радио создают среднюю нагрузку
CPU 18% / MEM 50mb
Скорее всего потому что тесты выше проводились на новейшем Xeon процессоре с 4200Mhz, а этот сервер с процессором 3600Mhz.
Поэтому можно сказать что наш сервер и сервер Icecast2 создают примерно одинаковую нагрузку.
В любом случае мощностей сервера хватает чтобы спокойно обрабатывать 5000 слушателей, а больше и не требуется.
Следующим этапом мы будем переключать другие вещающие сервера и если будет всё отлично то и LIVE сервер.
20090
Dimitry
@Dimitry
21.03.2020
Преимущества нашего сервера на данный момент - которые себя уже показали - версия 1.1
1. У одного радио на тарифе PRO были постоянные проблемы с обновлением метаданных - названий песен на сервере.
Ничего не помогало, что-то было не так с Icecast в совокупности с некоторыми треками этого радио. (собственной звукозаписи)
Однако смена сервера Icecast на наш сервер сразу же решила эту проблему, что даёт ещё 1+ нашему серверу.
2.Также протестировали новую фишку нашего сервера при которой слушателей никогда не выкидывает с сервера.
Можно перезагружать АвтоDJ и отключаться от LIVE вещания сколько угодно, радио переходит в Оффлайн режим, но как только возобновляется вещание, все слушатели сразу же получают новый поток - все остаются подключены. В случае с Icecast, существует fallback на тишину, однако по непонятным причинам иногда все слушатели вылетают с потока.
20090
Dimitry
@Dimitry
27.03.2020
Доработки сервера и исправление ошибок - версия 1.2
- улучшение обработки при подключения слушателя, более быстрый старт прослушивания
- поддержка больших файлов приветствия при подключении слушателя длительностью до 1 минуты
- адаптивная обработка приветствия, теперь вне зависимости от длинны приветствия, поток продолжает играть с буферизацией в 5 сек
(раньше задержка равнялась длине приветствия, которое у некоторых могло быть более 20 сек)
20090
Dimitry
@Dimitry
11.05.2020
Доработка сервера и исправление ошибок - версия 1.3
Неделю назад все сервера уже были перезапущены ночью.
Теперь при LIVE вещании в плеерах Winnamp/WMP/AMP в скобках отображается имя диджея, ранее всегда было имя Auto-DJ.
После обновления ОС и замены серверов, все найденные ошибки исправлены, сервера показывают стабильную работу.
Дальше будут только мелкие доработки. Icecast можно отправить в историю - для совместимости все протоколы соблюдены.
20090
Dimitry
@Dimitry
26.07.2020
Доработка сервера и исправление ошибок - версия 1.4
Исправлено переполнение буфера и утечки памяти. Теперь сервер расходует ещё меньше памяти и расход памяти с течением времени не увеличивается.
Исправлена работа с Ogg форматом. Ранее при вещании LIVE в данном формате поток мог зависать и молчать. Все известные проблемы вновь исправлены.
20090
Dimitry
@Dimitry
31.10.2020
Доработка сервера и исправление ошибок - версия 1.5
Исправлены ошибки при подключении некоторых редких программ вещания, например StereoTool. Добавлена техническая возможность обрабатывать HEAD запрос, который используется обычно для проверки доступности радио по ссылке.
Добавлена возможность из программ вещания передавать параметр
Stream Name
. Этот параметр обычно используется в качестве названия эфира или указания имени ведущего и контактов. Также он отображается в скобках после названия трека в различных плеерах на ПК. Ранее мы технически заменили его на имя диджея из нашей системы. Но теперь в настройках можно выбирать, отображать имя диджея или
Stream Name
из программы вещания. Позднее этот параметр будет отображаться в каталоге и в наших приложениях. Чтобы параметр заработал, перезагрузите также радио с
Auto-DJ v3.06
и переподключите вещание. Кроме этого в скрипты плеера добавлен новый соответствующий параметр
streamname
. А старый
djname
как и раньше выводит реальное имя ведущего LIVE.